自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何讓一個(gè)字符串執(zhí)行?

開發(fā)
eval() 函數(shù)可計(jì)算某個(gè)字符串,并執(zhí)行其中的的 JavaScript 代碼

 雖然eval()函數(shù)有這個(gè)功能但是我們還是避而遠(yuǎn)之,能不用盡量不要用。eval的執(zhí)行環(huán)境比較混亂,它會(huì)查找當(dāng)前執(zhí)行的上下文環(huán)境從而導(dǎo)致混亂。

[[342750]]

  1. let c = 1; 
  2. let d =eval(`module.exports = function(a,b){ 
  3.      return a+b+c 
  4. }`) 
  5. console.log(d(1,2))  //4  會(huì)把c也輸出 

Function
取代eval()方法的是new Function 即window.Function,不受上下文作用域的影響

  1. let z = 3; 
  2. let a = 'var a=1;return x+y+z'
  3. //最后一個(gè)參數(shù)是字符串  前面的參數(shù)是函數(shù)的形參 
  4. let fn = new Function("x","y","z",a); 
  5. console.log(fn.toString());  //function anonymous(x,y,z) {var a=1;return x+y+z} 
  6. // console.log(fn(1,2)); //NaN 
  7. //console.log(fn(1,2,3)); //6 

vm[2]
vm.runInThisContext ()在當(dāng)前全局上下文中運(yùn)行代碼并返回結(jié)果。運(yùn)行代碼不能訪問本地范圍,但是可以訪問當(dāng)前的全局對(duì)象。

  1. const vm = require('vm'); 
  2.  
  3. const vmResult = vm.runInThisContext('localVar = "vm";'); 
  4. console.log(vmResult)  //vm 
  5. console.log(localVar)  //vm 

  1. const vm = require('vm'); 
  2. let localVar = 'initial value'
  3.  
  4. const vmResult = vm.runInThisContext('localVar = "vm";'); 
  5. console.log(`vmResult: '${vmResult}', localVar: '${localVar}'`); 
  6. // Prints: vmResult: 'vm', localVar: 'initial value' 
  7.  
  8. const evalResult = eval('localVar = "eval";'); 
  9. console.log(`evalResult: '${evalResult}', localVar: '${localVar}'`); 
  10. // Prints: evalResult: 'eval', localVar: 'eval' 

因?yàn)関m.runInThisContext ()不能訪問本地作用域,所以 localVar 沒有更改。相比之下,eval ()確實(shí)可以訪問本地范圍,因此會(huì)更改值 localVar。

 

責(zé)任編輯:姜華 來源: 小丑的小屋
相關(guān)推薦

2023-04-25 15:46:51

Python字符串

2022-11-24 08:01:57

bash腳本字符串

2019-12-16 09:26:05

Java設(shè)計(jì)操作系統(tǒng)

2022-12-08 15:55:52

JavaScript字符串

2019-01-08 09:23:16

Java字符串編碼

2021-07-26 10:58:07

Chromebook谷歌更新

2010-10-09 13:41:42

MySQL字符串

2020-09-07 07:35:03

Grep命令字符串

2023-06-01 07:49:51

2020-11-03 18:36:37

面試字符串算法

2009-11-16 17:59:13

PHP數(shù)組轉(zhuǎn)字符串

2021-12-03 08:50:25

LeetCode正則表達(dá)式算法

2011-05-25 09:58:46

C#

2023-05-05 08:41:16

SQL字符函數(shù)

2020-06-28 14:18:23

Python代碼開發(fā)

2009-08-12 11:24:25

C# String對(duì)象

2010-09-26 13:51:48

SQL游標(biāo)

2009-12-15 15:35:56

Ruby symbol

2023-10-10 08:24:12

2021-07-14 06:40:02

矩陣路徑字符串
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)