传递给 IIFE 的对象 属性(数字)的类型返回未定义。为什么?
typeof of an object property (number) on passing to IIFE is returning undefined. Why?
怎么输出的不是数字?
- 有一个简单的函数 (IIFE) 正在传递一个对象,属性 其中是一个数字
- 当我们试图找到引用数字的 属性 的类型时,结果是 'undefined'
怎么样?
<script>
x = (function(foo){
return typeof(foo.bar);
})({ foo: { bar: 1 } });
console.log(x);
</script>
如果应该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);
foo 是参数。您必须使用 访问函数内部的属性。符号
x = (function(foo){
return typeof(foo.foo.bar);
})({ foo: { bar: 1 } });
console.log(x);
你函数中的 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);
您可以在函数参数中解构 foo
。
let x = (function({foo}){
return typeof(foo.bar);
})({ foo: { bar: 1 } });
console.log(x);
怎么输出的不是数字?
- 有一个简单的函数 (IIFE) 正在传递一个对象,属性 其中是一个数字
- 当我们试图找到引用数字的 属性 的类型时,结果是 'undefined'
怎么样?
<script>
x = (function(foo){
return typeof(foo.bar);
})({ foo: { bar: 1 } });
console.log(x);
</script>
如果应该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);
foo 是参数。您必须使用 访问函数内部的属性。符号
x = (function(foo){
return typeof(foo.foo.bar);
})({ foo: { bar: 1 } });
console.log(x);
你函数中的 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);
您可以在函数参数中解构 foo
。
let x = (function({foo}){
return typeof(foo.bar);
})({ foo: { bar: 1 } });
console.log(x);