有没有什么办法可以做到如下
console.log(a); // undefined
console.log(a.b); // undefined
console.log(a.b.c); // 1
有没有什么办法可以做到如下
console.log(a); // undefined
console.log(a.b); // undefined
console.log(a.b.c); // 1
根据您的描述,如果a
变量为undefined
,但是a.b.c
的值是1,那么您可以使用以下代码实现:
console.log(a); // undefined
console.log(a.b); // undefined
console.log(a.b.c); // 1
在这个代码中,a
是一个变量,但它是未定义的。在第一个console.log()
中,我们将未定义的变量打印到控制台,所以它会返回undefined
。在第二个console.log()
中,我们尝试打印a.b
,但由于a
是未定义的,所以它也会返回undefined
。最后,在第三个console.log()
中,我们尝试打印a.b.c
,由于a.b
是未定义的,所以它也会返回undefined
。但是,由于a.b.c
的值是1,所以这个值会被打印到控制台。
let i = 0
let a1 = {}
let b2 = {}
Object.defineProperty(window, 'a', {
get (val) {
i++
if (i === 1) {
Object.defineProperty(a1, 'b', {
get () {
if (i === 2) {
Object.defineProperty(b2, 'c', {
get () {
return 1
}
})
}
return i === 2 ? undefined : b2
}
})
}
return i === 1 ? undefined : a1
},
set () { }
})
console.log(a)
console.log(a.b)
console.log(a.b.c)
纯属应付
const a = {
b: {
c: {
v: 1
},
v: undefined
},
v: undefined
}
const bp = console.log;
console.log = v => bp(v.v)
console.log(a); // undefined
console.log(a.b); // undefined
console.log(a.b.c); // 1
13 回答12.7k 阅读
8 回答2.4k 阅读
2 回答5k 阅读✓ 已解决
7 回答1.8k 阅读
3 回答2.2k 阅读✓ 已解决
5 回答747 阅读
3 回答1.1k 阅读✓ 已解决
可能不符合题意,但是确实是
undefined
补充,
undefined
不是对象,而Object.defineProperty
和Proxy
都只能用于对象,所以如果a
真是undefined
是不可能实现的;如果自定义一个对象,让
console.log
输出这个对象的时候打印undefined
,不同浏览器的console.log
实现不同,而且不一定会调用toString()
或者valueOf()
: