第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么時候JS將{}解釋為空塊而不是空對象?

什么時候JS將{}解釋為空塊而不是空對象?

夢里花落0921 2019-08-19 17:36:24
什么時候JS將{}解釋為空塊而不是空對象?我正在閱讀這個問題的答案(關于“wat”視頻),它說:{}+[]這被解釋為一個空的代碼塊,一元加和空數(shù)組。第一部分什么都不做,數(shù)組轉換為逗號分隔的字符串(空數(shù)組為空數(shù)組),然后轉換為數(shù)字(空字符串轉換為0),因此為0。我目前正在從“權威指南”學習JS,所以我試著真正理解這樣的事情。我的問題是,JS何時決定將其解釋{}為空代碼塊,而不是空對象?另外,我想了解Node.js和Firebug之間的一些不一致之處。螢火蟲:Node.js的:
查看完整描述

2 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

我們來看看語言語法吧?第12節(jié),聲明

Statement :
    Block
    VariableStatement
    EmptyStatement
    ExpressionStatement
    ...lots of other stuff...

這是一種非常奇特的方式,可以說語句可以是塊,變量語句,空語句,表達式語句或許多其他東西。請注意,第一個選項是“Block”:

Block :
    { StatementList(opt) }StatementList :
    Statement
    StatementList Statement

再一次,這是一種奇特的方式,說一個塊是一個{,可選地后跟一堆語句,然后是一個}。

這就是你在你的例子中看到的:在JavaScript解析器認為你擁有的東西可能是一個對象文字(在某個地方被定義ExpressionStatement,第四個是'Statement'可能是)之前,它首先認為你有一個'Block ”。

編輯:如果需要,您可以在JavaScript引擎的源代碼中看到它:

關于你的第二個問題,關于這個問題已經詳細介紹??偨Y一句話:Node.js將您的輸入視為表達式(因此它不能是“阻止”),而Firebug / Chrome開發(fā)工具將其視為“語句”。


查看完整回答
反對 回復 2019-08-19
?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

當新語句中的第一個標記為{,則將{}其解釋為空塊。

(實際上當然{出現(xiàn)在類似ifor 之類的header子句之后while,那么它{}也是一個空塊,但那不是有趣的情況。)

因此,在任何其他上下文中,比如說一個函數(shù)的參數(shù):

foo({});

{}被解釋為一個空對象文字。

這種情況類似于function關鍵字在語句中的第一件事時被區(qū)別對待的方式。語法有歧義,解析器用固定規(guī)則解決問題。


查看完整回答
反對 回復 2019-08-19
  • 2 回答
  • 0 關注
  • 881 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號