日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
盤點JavaScript中Eval函數(shù)的使用方法

大家好,我是進階學習者。

創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網技術服務公司,擁有項目網站設計、成都做網站網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元江安做網站,已為上家服務,為江安各地企業(yè)和個人服務,聯(lián)系電話:028-86922220

一、前言

內建函數(shù) eval 函數(shù)允許執(zhí)行一個代碼字符串。

語法 :

 
 
 
 
  1. let result = eval(code); 

例 :

 
 
 
 
  1. let code = 'alert("Hello")'; 
  2. eval(code); // Hello 

運行結果:

代碼字符串可能會比較長,包含換行符、函數(shù)聲明和變量等。

eval 的結果是最后一條語句的結果。

例:

 
 
 
 
  1. let value = eval('1+1'); 
  2. alert(value); // 2 
  3. let value = eval('let i = 0; ++i'); 
  4. alert(value); // 1 

運行結果:

eval 內的代碼在當前詞法環(huán)境(lexical environment)中執(zhí)行,因此它能訪問外部變量:

 
 
 
 
  1. let a = 1; 
  2. function f() {  
  3.   let a = 2;  eval('alert(a)');  
  4.   // 2 
  5.   f(); 

運行結果:

它也可以更改外部變量:

 
 
 
 
  1. let x = 5; 
  2. eval("x = 10"); 
  3. alert(x); // 10,值被更改了 

運行結果:

嚴格模式下,eval 有屬于自己的詞法環(huán)境。因此不能從外部訪問在 eval 中聲明的函數(shù)和變量:

 
 
 
 
  1. // 提示:本教程所有可運行的示例都默認啟用了嚴格模式  
  2. 'use strict'eval("let x = 5; function f() {}"); 
  3. alert(typeof x); // undefined(沒有這個變量) 
  4. // 函數(shù) f 也不可從外部進行訪問 

如果不啟用嚴格模式,eval 沒有屬于自己的詞法環(huán)境,因此可以從外部訪問變量 x 和函數(shù) f。

二、案例

Eval-計算器

創(chuàng)建一個計算器,提示用戶輸入一個算術表達式,并返回其計算結果。

讓使用 eval 來計算數(shù)學表達式:

 
 
 
 
  1. let expr = prompt("Type an arithmetic expression?", '23+2'); 
  2. alert( eval(expr) ); 

需要檢查表達式是否正確。只需要計算并返回結果。用戶可以輸入任意文本或代碼。

運行結果:

三、使用 “eval”

在 eval 中使用外部局部變量也被認為是一個壞的編程習慣,因為這會使代碼維護變得更加困難。

有兩種方法可以完全避免此類問題。

如果 \eval\ 中的代碼,+沒有使用外部變量,請以 window.\eval(...) 的形式調用 \eval\。

通過這種方式,該代碼便會在全局作用域內執(zhí)行:

 
 
 
 
  1. let x = 1; 
  2.   let x = 5; 
  3.   window.eval('alert(x)'); // 1(全局變量) 

運行結果:

如果 \eval\ 中的代碼需要訪問局部變量,可以使用 new Function 替代 \eval\,并將它們作為參數(shù)傳遞:

 
 
 
 
  1. let f = new Function('a', 'alert(a)'); 
  2. f(5); // 5 

運行結果:

注:

new Function 從字符串創(chuàng)建一個函數(shù),并且也是在全局作用域中的。所以它無法訪問局部變量。

四、總結

本文基于JavaScript基礎,介紹了 Eval函數(shù)的使用。調用 eval(code) 會運行代碼字符串,并返回最后一條語句的結果。

要在全局作用域中 eval 代碼,可以使用 window.eval(code) 進行替代。

通過案例的分析,進行詳細的講解。在實際應用中需要注意的點,遇到的難點,提供了詳細的解決方法。使用JavaScript語言,能夠讓讀者更好的理解。代碼很簡單,希望能夠幫助讀者更好的學習。


當前題目:盤點JavaScript中Eval函數(shù)的使用方法
文章地址:http://www.dlmjj.cn/article/dpdicdj.html