首页 > 代码库 > Javascript 深入了解Javascript 基础知识
Javascript 深入了解Javascript 基础知识
eval全局函数
dojo 的加载器中会看到以下一个函数
var eval_ = new Function('return eval(arguments[0]);'); //Function 函数是在顶级作用域下运行, 但运行效率更慢, 但使用这种方法不会污染全局变量,并且调用的是顶级作用域 eval('var i =100;'); alert(i); // 100 eval_('var b = 100'); //alert(b); //错误, b 没有定义 var where = '我在国外'; //全局作用域的where function test() { var where = '我在国内'; //闭包的where eval_('alert(where)'); //我在国外, 全局作用域 eval('alert(where)');//我在国内, 局部全用域 window.eval('alert(where)'); //我在国外 IE6/7/8 我在国内,不会采用全局作用域, 可以使用execScript } test()
dojo的kernal模块中也会有一个eval函数, 代码和解释如下
(Function("d", "d.eval = function(){return d.global.eval ? d.global.eval(arguments[0]) : eval(arguments[0]);}"))(dojo); /*===== dojo.eval = function(scriptText){ // 尝试在全局作用域下执行角本字符串(scriptText), 除了IE不能支持,其它浏览器都可以正确的在全局作用域下执行, IE下执行 dojo.eval('var pi = 3.14'); alert(pi) //pi undefined; 要在IE中执行全局变量 dojo.eval("window.pi = 3.14"); IE 下要执行全局变量, 只能使用execScript, 但是它不会返回值, 并且不能终止执行 */
Javascript 深入了解Javascript 基础知识
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。