亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

javascript eval() 函數的參數

javascript eval() 函數的參數

德瑪西亞99 2023-09-28 10:19:04
我很想在MDN上閱讀有關 eval() 函數的更多信息,并遇到了以下段落如果 eval() 的參數不是字符串,則 eval() 返回該參數不變。在以下示例中,指定了 String 構造函數,并且 eval() 返回 String 對象而不是計算字符串。eval(new String('2 + 2')); // returns a String object containing "2 + 2" eval('2 + 2');             // returns 4這對我來說沒有意義,因為“如果 eval 不評估它的參數,如果它不是字符串,那么它為什么要創建一個新的對象實例???”
查看完整描述

3 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

這非常簡單。您可以eval如下剖析:


if (typeof argument === "string") return <evaluation of string>;

else return argument; // eval just returns what it gets

所以你的例子:


    eval(new String('2 + 2'));

您可以將其分為兩個語句:


let arg = new String('2 + 2');

console.log(typeof arg); // object

console.log(eval(arg) === arg); // true, because typeof arg is not "string"


另外兩個示例將類型字符串傳遞給eval:


let arg = "new String(2+2)";

console.log(typeof arg); // string

// Now we get evaluation of 2+2 and String constructor is called:

console.log(eval(arg)); // a String object (that's what the constructor produces)

'2 + 2'在第三個示例中,計算字符串,即字符串“2 + 2”。其余與第二個例子相同。

請注意,String 對象不是 string”類型,而是“object”類型。


查看完整回答
反對 回復 2023-09-28
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

返回的類型new String('2 + 2')"object"

console.log( typeof new String('2 + 2') )
console.log( typeof new String('2 + 2').toString() )

由于這是一個對象,


如果 eval() 的參數不是字符串,則 eval() 返回該參數不變。


如果您使用 專門將 String 對象強制轉換為字符串基元.toString(),則它會按您的預期運行。


console.log(eval('2 + 2'));   

console.log(eval(new String('2 + 2')));

console.log(eval(new String('2 + 2').toString()));


查看完整回答
反對 回復 2023-09-28
  • 3 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號