`
bolinyang
  • 浏览: 75349 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Javascript中的eval函数

阅读更多
一.概述

我们知道JS中有一个函数eval,在调用这个函数的时候,我们可以传递一段JS代码进去,这时候这个JS代码就会被执行。如果这段JS代码中有些已经定义的变量,那么此时的变量作用域如何确定呢?我们想到eval函数在JS中也是一个变量,这个变量也有自己的作用域,我们假设eval函数的作用域是A,那么在eval函数中使用到的变量,其作用域也是A。下面我们来看一段小程序的输出,验证一下这个结论

二.代码
	var geval = eval;				// 保存一个全局eval的引用
	var x = "global", y = "global";
	function f() {
		var x = "local";
		eval("x += ' changed';");	// 局部eval
		return x;					// 返回更改的局部变量
	}
	function g() {
		var y = "local";
		geval("y += ' changed';");	// 全局eval
		return y;					// 返回未更改的局部变量
	}
	
	console.log(f(), x);			// 输出:local changed global 
	console.log(g(), y);			// 输出:local global changed

三.总结

在代码一开始,我们为全局的eval函数起了一个别名,如果eval函数卸载函数内部,那么eval优先查找的作用域就是当前函数,如果eval写在全局作用域中,eval优先查找的作用域就是全局作用域,沿着作用域链一直向上查找。在函数f()中eval所在的作用域是f(),对于eval中出现的变量查找也先会从f()函数内开始查找,但是在函数g()中geval所在的作用域是全局作用域,对于geval中出现的变量也就从全局作用域中开始查找。
关于eval在平时的开发中自己没怎么用过,也没见其他同学使用过。目前暂时找不到eval的使用场景,但是对于eval的这个功能要清楚,它可以执行一段以字符串方式表示的字符串。这对于前端JS的单元测试或许有用,执行一段JS代码,看看其结果是否符合我们的期望。关于前端JS的单元测试,貌似不怎么流行,有很大的原因是没有成熟的技术来支持JS的单元测试。
分享到:
评论

相关推荐

    Javascript中eval函数的用法

    JavaScript 中 eval 函数的用法 JavaScript 中的 eval 函数是一个非常强大且灵活的函数,可以将一个字符串当作一个 JavaScript 表达式来执行。正如我们在上面的描述中所看到的,eval 函数可以将一个字符串解释成 ...

    javascript中eval函数用法分析.docx

    ### JavaScript中eval函数用法分析 #### 一、eval函数简介 `eval()`函数是JavaScript中的内置函数之一,用于解析并执行包含JavaScript代码的字符串。它只有一个参数,该参数可以是字符串或非字符串类型。 - **非...

    在Javascript中Eval函数的使用?

    JavaScript中的`eval()`函数是一个非常特殊且功能强大的工具,它能够执行一个字符串作为JavaScript代码。这个函数在很多情况下被用于动态地编译和运行代码,但同时也因为其潜在的安全风险和性能问题而备受争议。在...

    javascript中eval函数用法分析

    本文实例分析了javascript中eval函数用法。分享给大家供大家参考。具体分析如下: eval()只有一个参数,如果传入的参数不是字符串,则直接返回这个参数。否则会将字符串当成js代码进行编译,如果编译失败则...

    在Javascript中Eval函数的使用.doc

    在JavaScript中,`eval()`函数是一个极具争议但又非常有用的工具。它允许我们将字符串作为JavaScript代码来执行,这在某些特定场景下提供了极大的灵活性。然而,这种灵活性也带来了安全风险和性能问题,因此在实际...

    Javascript中eval函数的详细用法与说明

    Javascript 中 eval 函数的详细用法与说明 eval 函数是 JavaScript 中一个非常强大且灵活的函数,它可以将一个字符串当作一个 JavaScript 表达式一样去执行它。以下是 eval 函数的详细用法和说明: eval 函数的...

    javascript 自定义eval函数实现

    JavaScript中的`eval()`函数是一个非常强大但又颇具争议的功能,它允许执行一个字符串作为JavaScript代码。在本讨论中,我们将深入探讨如何自定义`eval()`函数以提高代码的安全性和效率,同时也会涉及到JavaScript的...

    深入认识javascript中得eval函数

    ### 深入认识JavaScript中的eval函数 #### 一、eval函数概述 在JavaScript中,`eval`函数是一个内置函数,它可以将字符串形式的代码解析并执行。这为开发者提供了一种灵活的方式来动态生成和执行代码。然而,由于...

    JavaScript中eval函数的问题

    今天看代码,遇到一个eval函数的问题,到现在翻了很多博文,还是不是很懂eval函数,有个一直没法理解的代码如下: /* var start = [] , end = [] , timings = []; */ function f(){ //模拟程序执行时间 var sum ...

    Javascript中Eval函数的使用说明

    JavaScript中的`eval()`函数是一个非常强大的工具,它可以将接收到的字符串当作JavaScript代码来执行。这个功能使得动态编程成为可能,允许程序根据运行时的条件或用户输入来改变其行为。然而,`eval()`的使用也需要...

    Javascript中Eval函数的使用

    函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。 举个小例子: 代码如下: var the_unevaled_answer = “2 + 3”; var the_evaled_answer = eval(“2 + 3”); alert(“the un-...

    javascript执行eval函数时利用正则表达式去掉回车符换行符和注释

    最后,关于文档`javascript执行eval函数时利用正则表达式去掉回车符换行符和注释.doc`,这可能是详细阐述这一过程的文档,包含了具体实现和可能遇到的问题的解决方案。阅读此文档将有助于深入理解如何实际应用这些...

    Javascript中eval函数的使用方法与示例

    函数可计算某个字符串,并执行其中的的 JavaScript 代码。 语法 eval(string) 参数 描述 string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。 返回值 通过计算 string 得到...

    java实现eval函数

    然而,如果你提供的压缩包"java实现eval函数"包含的是一个Java项目,那么它很可能是实现了类似功能的自定义解决方案,可能是一个解析器或者编译器,用于处理特定的表达式或脚本语法。这个项目可能包括以下几个部分:...

Global site tag (gtag.js) - Google Analytics