成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

盤點JavaScript中Eval函數的使用方法

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

一、前言

內建函數 eval 函數允許執行一個代碼字符串。

語法 :

let result = eval(code);

例 :

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

運行結果:

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

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

例:

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

運行結果:

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

let a = 1;
function f() { 
  let a = 2;  eval('alert(a)'); 
  // 2
}
  f();

運行結果:

它也可以更改外部變量:

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

運行結果:

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

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

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

二、案例

Eval-計算器

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

讓使用 eval 來計算數學表達式:

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

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

運行結果:

三、使用 “eval”

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

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

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

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

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

運行結果:

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

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

運行結果:

注:

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

四、總結

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

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

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

責任編輯:華軒 來源: 前端進階學習交流
相關推薦

2021-07-16 07:57:35

JavaScriptEval函數

2024-09-03 13:32:11

JavaScriptEval函數

2023-06-28 08:34:02

Bind()函數JavaScript

2010-10-08 14:27:25

JavascriptSplit

2021-08-31 10:01:04

JavaScript函數屬性

2011-07-12 17:18:23

PHPstrtotime

2009-03-11 15:30:05

evalwithJavascript

2022-03-29 09:15:55

Javascript函數屬性

2021-10-09 07:10:30

JavaScriptBigIn函數

2023-09-12 07:38:36

C++getline函數

2009-12-07 16:52:59

PHP函數getima

2009-11-30 17:43:54

PHP split()

2011-08-29 15:58:51

Lua函數

2011-04-13 15:44:12

SQL Server數函數

2009-11-26 15:23:24

PHP函數ereg()

2009-11-26 19:05:04

PHP函數explod

2009-08-28 17:01:43

C#構造函數

2009-07-31 13:48:34

C# eval()函數

2009-11-16 16:54:00

PHP構造函數

2009-12-01 19:02:20

PHP取整函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 激情视频网站 | 天堂男人av | 精品国产久 | 色.com| 涩涩视频网站在线观看 | www.夜夜骑| 观看av | 龙珠z国语版在线观看 | 天天综合永久 | 成人黄在线观看 | 色婷婷影院 | 免费看一区二区三区 | 91一区二区三区 | 日韩视频精品在线 | 日本欧美国产在线观看 | h视频免费看 | 91精品国产综合久久久久蜜臀 | 精品久久久久国产免费第一页 | 91影院在线观看 | 91av入口| 中文字幕av在线 | 国产极品粉嫩美女呻吟在线看人 | 日韩一区二区福利视频 | 91精品国产综合久久久久久首页 | 在线观看中文字幕视频 | 日韩一级免费大片 | 国产精品久久久久999 | 一区二区三区在线 | 日本免费在线看 | 午夜久久av | 亚洲精品在线免费观看视频 | 国产在线精品一区二区三区 | 一区二区三区四区五区在线视频 | 日韩电影中文字幕在线观看 | 日韩一区二区在线视频 | 欧美日韩高清在线观看 | www.国产精品 | 精品国产乱码久久久久久闺蜜 | 精品日韩一区 | 久久99精品久久久久久国产越南 | a国产一区二区免费入口 |