AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

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

來源: 責編: 時間:2024-07-11 17:31:16 680觀看
導讀一、前言內建函數 eval 函數允許執行一個代碼字符串。語法 :let result = eval(code);例 :let code = 'alert("Hello")';eval(code); // Hello運行結果:代碼字符串可能會比較長,包含換行符、函數聲明和變量等。eval 的結

一、前言

內建函數 eval 函數允許執行一個代碼字符串。BCr28資訊網——每日最新資訊28at.com

語法 :

let result = eval(code);

例 :BCr28資訊網——每日最新資訊28at.com

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

運行結果:BCr28資訊網——每日最新資訊28at.com

BCr28資訊網——每日最新資訊28at.com

代碼字符串可能會比較長,包含換行符、函數聲明和變量等。BCr28資訊網——每日最新資訊28at.com

eval 的結果是最后一條語句的結果。BCr28資訊網——每日最新資訊28at.com

例:BCr28資訊網——每日最新資訊28at.com

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

運行結果:BCr28資訊網——每日最新資訊28at.com

BCr28資訊網——每日最新資訊28at.com

BCr28資訊網——每日最新資訊28at.com

eval 內的代碼在當前詞法環境(lexical environment)中執行,因此它能訪問外部變量:BCr28資訊網——每日最新資訊28at.com

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

運行結果:BCr28資訊網——每日最新資訊28at.com

BCr28資訊網——每日最新資訊28at.com

它也可以更改外部變量:BCr28資訊網——每日最新資訊28at.com

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

運行結果:BCr28資訊網——每日最新資訊28at.com

BCr28資訊網——每日最新資訊28at.com

嚴格模式下,eval 有屬于自己的詞法環境。因此不能從外部訪問在 eval 中聲明的函數和變量:BCr28資訊網——每日最新資訊28at.com

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

如果不啟用嚴格模式,eval 沒有屬于自己的詞法環境,因此可以從外部訪問變量 x 和函數 f。BCr28資訊網——每日最新資訊28at.com

二、案例

Eval-計算器

創建一個計算器,提示用戶輸入一個算術表達式,并返回其計算結果。BCr28資訊網——每日最新資訊28at.com

讓使用 eval 來計算數學表達式:BCr28資訊網——每日最新資訊28at.com

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

需要檢查表達式是否正確。只需要計算并返回結果。用戶可以輸入任意文本或代碼。BCr28資訊網——每日最新資訊28at.com

BCr28資訊網——每日最新資訊28at.com

運行結果:BCr28資訊網——每日最新資訊28at.com

BCr28資訊網——每日最新資訊28at.com

三、使用 “eval”

在 eval 中使用外部局部變量也被認為是一個壞的編程習慣,因為這會使代碼維護變得更加困難。BCr28資訊網——每日最新資訊28at.com

有兩種方法可以完全避免此類問題。BCr28資訊網——每日最新資訊28at.com

如果 /eval/ 中的代碼,+沒有使用外部變量,請以 window./eval(...) 的形式調用 /eval/。BCr28資訊網——每日最新資訊28at.com

通過這種方式,該代碼便會在全局作用域內執行:BCr28資訊網——每日最新資訊28at.com

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

運行結果:BCr28資訊網——每日最新資訊28at.com

BCr28資訊網——每日最新資訊28at.com

如果 /eval/ 中的代碼需要訪問局部變量,可以使用 new Function 替代 /eval/,并將它們作為參數傳遞:BCr28資訊網——每日最新資訊28at.com

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

運行結果:BCr28資訊網——每日最新資訊28at.com

BCr28資訊網——每日最新資訊28at.com

注:BCr28資訊網——每日最新資訊28at.com

new Function 從字符串創建一個函數,并且也是在全局作用域中的。所以它無法訪問局部變量。BCr28資訊網——每日最新資訊28at.com

四、總結

本文基于JavaScript基礎,介紹了 Eval函數的使用。調用 eval(code) 會運行代碼字符串,并返回最后一條語句的結果。BCr28資訊網——每日最新資訊28at.com

要在全局作用域中 eval 代碼,可以使用 window.eval(code) 進行替代。BCr28資訊網——每日最新資訊28at.com

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

本文鏈接:http://www.tebozhan.com/showinfo-26-100461-0.html盤點JavaScript中Eval函數的使用方法

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python 數據類型(如整數、浮點數、字符串、列表、元組、字典)

下一篇: 一文帶您理解Python的map/filter/reduce

標簽:
  • 熱門焦點
  • vivo TWS Air開箱體驗:真輕 臻好聽

    在vivo S15系列新機的發布會上,vivo的最新款真無線藍牙耳機vivo TWS Air也一同發布,本次就這款耳機新品給大家帶來一個簡單的分享。外包裝盒上,vivo TWS Air保持了vivo自家產
  • 6月安卓手機性能榜:vivo/iQOO霸占旗艦排行榜前三

    2023年上半年已經正式過去了,我們也迎來了安兔兔V10版本,在新的驍龍8Gen3和天璣9300發布之前,性能榜的榜單大體會以驍龍8Gen2和天璣9200+為主,至于那顆3.36GHz的驍龍8Gen2領先
  • SpringBoot中使用Cache提升接口性能詳解

    環境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架從 3.1 開始,對 Spring 應用程序提供了透明式添加緩存的支持。和事務支持一樣,抽象緩存允許一致地使用各
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力?! RM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度?! RM軟件市場規模如今超過580
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術,可以幫助我們寫出更加優雅、泛用的函數。本文將首先介紹柯里化和反柯里化的概念、實現原理和應用
  • 網紅炒股不為了賺錢,那就是耍流氓!

    來源:首席商業評論6月26日高調宣布入市,網絡名嘴大v胡錫進居然進軍了股市。在一次財經媒體峰會上,幾個財經圈媒體大佬就“胡錫進炒股是否知道認真報道”展開討論。有
  • 小米MIX Fold 3配置細節曝光:搭載領先版驍龍8 Gen2+罕見5倍長焦

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
  • 3699元!iQOO Neo8 Pro頂配版今日首銷:1TB UFS 4.0同價位唯一

    5月23日,iQOO推出了全新的iQOO Neo8系列,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標準版搭載高通驍龍8+,而Pro版更是首發搭載了聯發科天璣9200+旗艦
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學的小東加入了一個大學生兼職QQ群。群主“七王”在群里介紹一些刷單賺
Top