簡體   English   中英

傳遞給IIFE時,對象屬性(數字)的typeof返回undefined。 為什么?

[英]typeof of an object property (number) on passing to IIFE is returning undefined. Why?

世界上輸出的數字不是多少?

  • 有一個傳遞給對象的簡單函數(IIFE),其屬性為數字
  • 當我們嘗試查找引用數字的屬性的typeof時,結果為“未定義”

怎么樣?

 <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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM