[英]typeof of an object property (number) on passing to IIFE is returning undefined. Why?
世界上輸出的數字不是多少?
怎么樣?
<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);
您可以在function參數中解構foo
。
let x = (function({foo}){ return typeof(foo.bar); })({ foo: { bar: 1 } }); console.log(x);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.