浅谈 js eval作用域
2024-10-11 04:31:08
就简单聊下如何全局 eval 一个代码。
var x = 1;
(function () {
eval('var x = 123;');
})();
console.log(x);
这个代码得到的是 1 而不是 123
如果想让 eval 执行的代码是全局的,那么有几种方法。
var x = 1;
(function () {
window.eval('var x = 123;');
})();
console.log(x);
这个方法标准浏览器都可以得到 123 而IE6-8则依然是 1
相同的例如
var arr = [0,0,0,0,0,0];
(function () {
var arr = [1,1,1,1,1,1];
var _eval = eval;
window.eval('arr[0] = 123;');
eval.call(null, 'arr[1] = 123;');
_eval('arr[2] = 123;');
(0,eval)('arr[3] = 123;');
})();
console.log(arr);
0,1 貌似不支持IE8- 2,3 貌似不支持 IE7-
反正归根结底就是兼容性有问题。
不过还在IE下有个 execScript 非常好使。
var x = 1;
(function () {
(!-[1,] ? execScript : eval)('var x = 123;');
})();
console.log(x);
这样基本上就全兼容了。
好了,今天就分享这么个小知识点了。
最新文章
- Java集合之HashMap
- 相克军_Oracle体系_随堂笔记002-基础
- iOS播放器 - AVAudioPlayer
- css解决div的各种浏览器兼容性问题
- 使用Topshelf快速搭建Windows服务
- 【String与基本类型之间的转换】以及【进制转换】
- Leetcode 198 House Robber
- setTimeout实现动画的黄金优化法则
- .Net大文件上传(转--待验证)
- 怎么加 一个 hyperlink 到 e-mail template for CRM
- Codeforces 13C Sequence
- 虚拟键盘,移动web开发的痛
- 【Demo 0005】视图控制器
- SpringMVCURL请求到Action的映射规则
- CSS三种引入方式:内联、页级、外联
- Java中private、protected和public作用域的异同
- CAS 4.0.x 自定义登录页面
- 移除文件(git rm)
- C语言感想---第一次作业
- 笔记《JavaScript 权威指南》(第6版) 分条知识点概要1—词法结构