簡體   English   中英

為什么將外部函數中定義的對象重新分配給與外部聲明相同的變量名,這會產生錯誤?

[英]Why reassigning an object defined in the outer function to a same variable name as declared outside is giving error?

為什么在下面的代碼中未定義b typeof

var b = function() {}

var a = function() {
var b = b
console.log('typeof function_b:', typeof b) 
}
a()

因為您要使用var b聲明在a函數范圍內初始化新變量。

var b被初始化並在賦值之前運行( b = b ),因此它會將剛初始化的空值賦給它自己。

要更改輸出,您可以跳過var聲明,而typeof b輸出“ function”:

var b = function() {}

var a = function() {
    b = b;
    console.log('typeof function_b:', typeof b); // Outputs "function"
}
a();

這是因為先聲明變量( var b ),然后將其賦值為b = b 聲明后,在該作用域中undefined ,因此您要為其分配undefined

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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