麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

javascript的 {} 語句塊詳解

2019-11-20 10:29:42
字體:
供稿:網(wǎng)友

今日學(xué)習(xí)解析json字符串,用到了一個eval()方法,解析字符串的時候為什么需要加上括號呢?摸不著頭腦。原來javascript中{}語句塊具有二義性,不加括號會出錯,理解這種二義性對我們理解javascript代碼有極大幫助。

一、{}語句塊的兩個含義

表示語句塊

a. 在javascript中可以使用{}來括起代碼,在編輯器中方便管理代碼。因為javascript并沒有塊級作用域,所以這種寫法是無害的。

{//some code...}


b. 在javascript中 ,條件判斷語句,循環(huán)語句,函數(shù)都需要{}語句塊來整合代碼

對象字面量

var box = {  name:'kuoaho',  age:21 }

//此時[code]作為表達(dá)式,可以賦值給一個變量
//其實對象字面量就是可以生成對象值的表達(dá)式

二、那如果對象字面量不作為一個賦值表達(dá)式,會發(fā)生什么情況呢?

example:

  {name:'kuoao'}    //沒有報錯,但是也沒有創(chuàng)建對象  {name:'kuohao',age}  //報錯

由上面可以看出對象字面量只能夠作為表達(dá)式賦值,第一種寫法沒有錯,只是javascript將它作為一個label語句解析了。

analysis:

  {name:'kuoao'}    //{}一個語句塊   // name:'kuohao',一個label語句,用于標(biāo)記for循環(huán)

三、但是問題又來了……

{name:'kuohao',age:21}

//這樣為什么會報錯?這不是對象字面量的寫法嗎?
因為javascript中{}的二義性,{}不僅僅被認(rèn)為是對象字面量而且還會被認(rèn)為是代碼塊。

analysis:  {  name:'kuohao',  age:21  }

一個代碼塊,兩條label語句,如果沒有逗號,是完全沒有問題的,所以關(guān)鍵在于逗號,兩條語句的分隔應(yīng)該使用分號,所以javascript會判定這是語法錯誤

四、正確的寫法

({  name:'kuohao',  age:21  })  //正確的寫法

()會把語句轉(zhuǎn)換成表達(dá)式,稱為語句表達(dá)式,對象字面量不是表達(dá)式嗎?為什么還需要()來轉(zhuǎn)換?

加上括號以后,就可以消除這種二義性,因為括號里的代碼都會被轉(zhuǎn)換為表達(dá)式求值并且返回,因此語句塊也就變成了對象字面量,也可以得出,對象字面量必須作為表達(dá)式而存在

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人福利在线播放 | 久久久久久久久久网 | 神秘电影91| 日韩黄色一级视频 | 万圣街在线观看免费完整版 | 自拍偷拍亚洲图片 | 国产一区毛片 | 日本羞羞的午夜电视剧 | 亚州视频在线 | 亚洲小视频在线播放 | 精品一区二区亚洲 | 亚洲一区二区在线视频 | 色网站综合 | 亚洲一区成人在线 | 202z中文字幕第一页 | www.99热视频 | 色啪综合 | 99亚洲精品| 亚洲免费资源 | 国产精品久久久久久久久久久久午夜 | www.精品在线 | 久久91精品 | av色先锋 | av手机免费在线观看 | 成人福利视频在 | 毛片在线免费播放 | 777sesese| 日韩.www | 国产成人高清在线观看 | 全免费午夜一级毛片真人 | 午夜在线成人 | 黄色网络免费看 | 强伦女教师视频 | 日韩av电影免费在线观看 | 国产精品久久久久久久久久久久久久久 | 美国一级黄色毛片 | 久久美女免费视频 | 特级毛片免费 | 91成人久久 | 秋霞a级毛片在线看 | 久久精品九九 |