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

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

執(zhí)行eval('({"ok":"true"})')返回了{ok: "true"},什么原理?

執(zhí)行eval('({"ok":"true"})')返回了{ok: "true"},什么原理?

回首憶惘然 2018-09-01 12:00:03
如下圖是在Chrome中得到的:問題:首先,str代表的是一個json字符串,這點應(yīng)該是沒疑問的,然后我運行eval('({"ok":"true"})')就返回了{ok: "true"},這里面是怎么實現(xiàn)的?是去看別人寫的項目的源碼中看到的,不明所以,請賜教~
查看完整描述

2 回答

?
飲歌長嘯

TA貢獻1951條經(jīng)驗 獲得超3個贊

eval() -- 你就想象成寫了一段代碼給瀏覽器解析,性質(zhì)是一樣的
如 let str = 'x={"ok":"true"}'; eval(str); 執(zhí)行之后 會在當前作用域中創(chuàng)建一個x的變量 賦值為 {ok:'true'}
你上面的例子 eval('(' + str + ')'); <==> 等價于直接在瀏覽器中寫了一個 {ok:'true'} 
由于不是合格的表達式,eval中在兩邊加了括號

查看完整回答
反對 回復 2018-09-06
?
慕村9548890

TA貢獻1884條經(jīng)驗 獲得超4個贊

eval函數(shù)接受字符串,然后把這個字符串當作js代碼去運行,返回運行的結(jié)果。

eval('({"ok":"true"})')

相當于運行

({"ok":"true"})

返回對象{ok: "true"}

個人覺得需要注意的點是兩邊為什么要加括號?
因為{}不僅可以用來聲明對象,還表示塊級作用域,
如果兩邊不加括號,會把{}當成塊級作用域解析,就會報語法錯誤;
加上括號,會把{}當作對象聲明處理,所以就會生成一個新的對象,不會報語法錯誤。


查看完整回答
反對 回復 2018-09-06
  • 2 回答
  • 0 關(guān)注
  • 932 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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