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

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

您好,請問在javascript中eval的用法!求大神解釋!

您好,請問在javascript中eval的用法!求大神解釋!

qq_花開花謝_0 2021-11-04 07:07:21
在跟隨鼠標(biāo)運動的文字中,eval有這么一個用法:eval('var curelement='+layerref+'["'+layername+'"]')麻煩高手幫忙解釋!謝謝:
查看完整描述

3 回答

?
紫衣仙女

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

1、和其他解釋性語言一樣,javascript 同樣可以解釋運行由javascript源代碼組成的字符串,javascript 通過eval()來完成。

2、 eval() 其實是一個函數(shù),是javascript很早版本中就已經(jīng)存在,但是javascript設(shè)計者和解釋器對其進行了許多的限制,看起來eval更像一個運算符。

但是作為用于動態(tài)執(zhí)行代碼,eval存在這樣的問題,解釋器無法對動態(tài)代碼做進一步的優(yōu)化。如果將它看做一個函數(shù),那它是可以被賦予其他名字的:

var A = eval;

var B = A;

如果是這樣的話,那么解釋器就無法優(yōu)化調(diào)用B()的函數(shù)了。因此設(shè)計者賦予eval一些運算符的特性(作為保留字)之后這些問題得到解決。當(dāng)然它還有更多的限制,留待讀者慢慢體會。

擴展資料

javascript中eval的用法代碼:

1、var globalEval = eval;     //定義全局eval函數(shù)別名

2、var a ='global', b = 'global';    //全局變量

3、function c(){  var a = 'local';      //局部變量

4、eval('a+="changed"');  //直接更改局部變量的值 

5、return a;      //返回更改后的局部變量

6、function d(){   var b = 'local';   

7、globalEval("b+='changed'");   

8、return b;}     

9、console.log(c(), a);            //localchanged                       

10、globalconsole.log(d() , b)           //local                                         

11、globalchanged



查看完整回答
反對 回復(fù) 2021-11-09
?
皈依舞

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

JavaScript eval() 函數(shù)

JavaScript 全局對象

定義和用法:

eval() 函數(shù)可計算某個字符串,并執(zhí)行其中的的 JavaScript 代碼。

語法:

eval(string)

返回值:

通過計算 string 得到的值(如果有的話)。

說明:

該方法只接受原始字符串作為參數(shù),如果 string 參數(shù)不是原始字符串,那么該方法將不作任何改變地返回。因此請不要為 eval() 函數(shù)傳遞 String 對象來作為參數(shù)。

如果試圖覆蓋 eval 屬性或把 eval() 方法賦予另一個屬性,并通過該屬性調(diào)用它,則 ECMAScript 實現(xiàn)允許拋出一個 EvalError 異常。

拋出:

如果參數(shù)中沒有合法的表達式和語句,則拋出 SyntaxError 異常。

如果非法調(diào)用 eval(),則拋出 EvalError 異常。

如果傳遞給 eval() 的 Javascript 代碼生成了一個異常,eval() 將把該異常傳遞給調(diào)用者。

擴展資料:

調(diào)用eval函數(shù)的三種情況:

1、直接調(diào)用

直接調(diào)用時,eval函數(shù)相關(guān)的執(zhí)行環(huán)境屬性ThisBinding,LexicalEnvironment,VariableEnvironment的值如下:

a) ThisBinding是調(diào)用eval函數(shù)時,調(diào)用方執(zhí)行環(huán)境的ThisBinding

b) LexicalEnvironment是調(diào)用eval函數(shù)時,調(diào)用方執(zhí)行環(huán)境的LexicalEnvironment

c) VariableEnvironemnt是調(diào)用eval函數(shù)時,調(diào)用方執(zhí)行環(huán)境的VariableEnvironment

2、間接調(diào)用

所謂間接調(diào)用,即將eval賦值給另一個變量后在調(diào)用

3、嚴格模式下的eval

在嚴格模式下,eval的LexicalEnvironment,VariableEnvironment指向?qū)儆趀val自己的Lexcial Environment,而不是調(diào)用方的Lexical Environment,但是ThisBinding還是調(diào)用方的ThisBinding。

同時,在嚴格模式下如果eval直接調(diào)用,那么eval的Lexical Environment的outer指針指向調(diào)用方的Lexical Environment,否則,如果是間接調(diào)用,那么eval的Lexical Environment的outer指針指向全局環(huán)境的Lexical Environment。


查看完整回答
反對 回復(fù) 2021-11-09
?
白衣染霜花

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

eval通常用在ajax上,而且也有eval的替代方法,完全可以拋棄eval這種東西。我看了源代碼發(fā)現(xiàn)在jquery 1.4中也拋棄了直接使用eval,用eval實在很容易被攻擊。
真想不到為什么在跟隨鼠標(biāo)運動的文字中會用到eval這個危險的東西。難道有從服務(wù)器傳輸鼠標(biāo)位置的數(shù)據(jù)?要不就是這段代碼是哪個菜鳥看了哪本國內(nèi)的垃圾教材寫的,然后不幸被你看到?

首先要知道,通過http傳輸?shù)氖亲址?br/>瀏覽器接收到字符串以后,是不會當(dāng)作javascript命令來解析的。
這時候用eval命令,就可以把字符串當(dāng)做JavaScript命令來執(zhí)行。這同時也就存在風(fēng)險,因為傳輸過來的字符串可能是惡意代碼。

還原這段代碼如下:
var curelement = layerref["layername"];
從這里就很容看出,curelement是變量,layerref是對象,layername是layerref對象的成員。至于是屬性還是方法,要看代碼里面是怎么寫的了。



查看完整回答
反對 回復(fù) 2021-11-09
  • 3 回答
  • 0 關(guān)注
  • 401 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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