输出结果不是数字吗?
如何?
<script>
x = (function(foo){
return typeof(foo.bar);
})({ foo: { bar: 1 } });
console.log(x);
</script>
答案 0 :(得分:1)
如果应为foo.foo.bar
foo
参数是一个对象,其中包含名为foo
的属性
x = (function(foo) {
return typeof(foo.foo.bar);
})({ foo: { bar: 1 } });
console.log(x);
您可能打算像这样破坏参数:
x = (function({ foo }) {
return typeof(foo.bar);
})({ foo: { bar: 1 } });
console.log(x);
答案 1 :(得分:1)
foo是参数。您必须使用来访问函数内部的属性。符号
x = (function(foo){
return typeof(foo.foo.bar);
})({ foo: { bar: 1 } });
console.log(x);
答案 2 :(得分:1)
您函数中的foo
参数是整个对象(而不是嵌套对象):
{ foo: { bar: 1 } }
因此,当您执行foo.bar
时,没有bar
属性,因此您得到undefined
。
因此,typeof undefined
将给您"undefined"
。相反,您可以使用更清晰的属性名称,以便每个对象的类型都易于理解,然后从您的参数访问foo
属性:
x = (function(obj){
return typeof(obj.foo.bar);
})({ foo: { bar: 1 } });
console.log(x);
答案 3 :(得分:1)
您可以在函数参数中分解foo
。
let x = (function({foo}){
return typeof(foo.bar);
})({ foo: { bar: 1 } });
console.log(x);