在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ javascript代碼 "test"(console.lo

javascript代碼 "test"(console.log(1)) 為什么可以執(zhí)行?

 "test"(console.log(1))

上面的代碼為什么能執(zhí)行(雖然報錯)?

clipboard.png

回答
編輯回答
醉淸風(fēng)

先執(zhí)行 console.log(1) 獲取值,再調(diào)用 "test"(console.log(1)),由于 "test" 是一個字符串,不是函數(shù),所以不能用 () 運(yùn)算符,會出錯

2017年6月8日 09:02
編輯回答
兔囡囡

首先,“test”在一定條件下還是可以作為函數(shù)的名稱的,注意這里是指全內(nèi)容,其定義實(shí)際是"\"test\""
比如下面的代碼:

var ttt={
            "\"test\"":function(abc){console.log(2)},
            "tttt":"\"test\""
        }
console.log(ttt["\"test\""]);
ttt["\"test\""](console.log(1));// 第一個調(diào)用會正常,在控制臺輸出1,2
console.log(ttt["tttt"]);
ttt["tttt"](console.log(3));    // 第二個調(diào)用會和題主一樣在控制臺輸出3后報類型錯

此外為什么ttt["tttt"](console.log(3))中會先執(zhí)行console.log(3),這是因?yàn)檫@里有括號,所以優(yōu)先處理了,然后其結(jié)果作為一個整體作為一個參數(shù)用于調(diào)用,但發(fā)現(xiàn)不能調(diào)用,所以報錯。

2017年1月23日 22:06