Google Chrome 雷区之一:与众不同的eval实现
运行代码:
javascript:var eval2 = eval;with({a:1})eval2("a+2")
在chrome上运行是要报错的。
记得ecma262 3rd上有一句,eval不应该通过引用别名调用(可能是处于优化的考虑吧)。
不过以往的实现中都没把这句话放在心上。
chrome虽然没有完全严格遵循ecma的的限制,不过,貌似还是充分利用理ecma的优化指导。
好同学,不愧是时下最快的js引擎。
貌似Chrome在eval的实现上,更加贴近标准了。
不过,这也许仅仅是chrome的一个bug,也许会在若干明主的口水淹没后,开始兼容更多的事实标准。
Google Chrome 雷区之二:警惕中文
var x = {
"中文":"安全"
}
压缩后将变成:
var x={
中文:"危险"
}
基于rhino的压缩工具(JSA,YUI-Compressor),都会自动做上述优化,但是,貌似目前chrome对中文代码的支持有限
Google Chrome雷区之三--莫动arguments对象
arguments与参数变量的关联
javascript:+function(a){var a= 'false';alert(arguments[0])}(true)
输出的是:false,
firefox3 也是如此
javascript:+function(a){Array.prototype.splice.call(arguments,0,1);alert(a)}(1)
输出的是undefined 其他浏览器都不是。
再翻阅一下ECMA标准的描述
10.1.8 Arguments Object
When control enters an execution context for function code, an arguments object is created and initialised as follows:
* The value of the internal [[Prototype]] property of the arguments object is the original Object prototype object, the one that is the initial value of Object.prototype (see 15.2.3.1).
* A property is created with name callee and property attributes { DontEnum }. The initial value of this property is the Function object being executed. This allows anonymous functions to be recursive.
* A property is created with name length and property attributes { DontEnum }. The initial value of this property is the number of actual parameter values supplied by the caller.
* For each non-negative integer, arg, less than the value of the length property, a property is created with name ToString(arg) and property attributes { DontEnum }. The initial value of this property is the value of the corresponding actual parameter supplied by the caller. The first actual parameter value corresponds to arg = 0, the second to arg = 1, and so on. In the case when arg is less than the number of formal parameters for the Function object, this property shares its value with the corresponding property of the activation object. This means that changing this property changes the corresponding property of the activation object and vice versa.
应该说,Google的实现是最贴近标准的。
而其他浏览器都或多或少没能实现。
这时为什么呢?自然有他的理由....
而我们能做的,那就是开发过程中,少动这个对象吧。
分享到:
相关推荐
本文档提供了Google Chrome浏览器的下载和安装方法、常见问题解答以及扩展插件推荐等多个方面的内容,为使用者提供了全面的指导和帮助。文档中详细介绍了Google Chrome浏览器的功能和优势,并提供了多个实例演示,让...
免费ChatGPT Sidebar是一个能够在谷歌Chrome浏览器侧栏显示ChatGPT的浏览器扩展插件,该扩展能够实现在网站的侧栏中显示一个聊天窗口,让网站的访问者与ChatGPT进行实时交互,类似于一个聊天机器人。ChatGPT Sidebar...
本篇主要为大家提供常见的Dom运用在各大主流浏览器(IE、Opera、Google Chrome、Safari、Firefox)中的兼容代码
专业用于浏览器劫持修复的工具,支持 IE、Firefox、Google Chrome、Opera…等各种常见浏览器。
国内网民计算机上常见的网页浏览器有,QQ浏览器、Internet Explorer、Firefox、Safari,Opera、Google Chrome、百度浏览器、搜狗浏览器、猎豹浏览器、360浏览器、UC浏览器、傲游浏览器、世界之窗浏览器等,浏览器是...
本文实例讲述了Selenium控制浏览器常见操作。分享给大家供大家参考,具体如下: Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, ...
浏览器是网页运行的平台,常用的浏览器有 IE、火狐(Firefox)、谷歌(Chrome)、Safari和Opera等。 移动端的浏览器 目前国内手机浏览器种类有很多:UC浏览器,QQ浏览器,百度浏览器,360安全浏览器,谷歌浏览器,...
教师可以免费获得Google Chrome浏览器“读写”的高级订阅。 要注册并激活您的订阅,请在安装Read&Write for Google Chrome试用版后访问texthelp.com/en-gb/products/read-write/free-for-teachers/。 在texthelp....
自动猎人Google Chrome扩展程序可通过Chrome自动测试基本的Web问题这个想法是半自动地扫描一些通用参数,而无需完全手动地进行并且不需要使用漏洞扫描器。 我实现的解决方案是一个浏览器扩展,可以在浏览时检测到...
最初是一个实验性项目,使我有机会使用Chrome浏览器API并探索网络性能优化。 这实际上提高了我的生产力,因此, New Tab现在可供任何人使用。 产品特点 具有多个主题的最小设计美学。 查看您打开的标签页列表。 ...
用于在Google Chrome浏览器或支持Chrome DevTools协议的其他目标中调试JavaScript代码的VS Code扩展。自动帮你完成头部和尾部闭合标签的同步修改,一个与camelCase代码配合良好的基本拼写检查程序。检查程序的目标是...
Scholar H-Index Calculator是一种文献计量和引文分析工具,可作为Google Chrome浏览器的插件,在Google Scholar页面的顶部提供更多见解。使用方法:只需访问Scholar.google.com并进行查询。增强的信息将在常规的...
为了您的系统安全,请不要安装从其他任何非官方渠道(特别是国内某搜索引擎推荐的链接)下载的Chrome浏览器。 1. Chrome网上应用商店 如果您所在的地区可以访问,请直接前往: //chrome.google....
如果仅仅是为了本地预览,可以使用Chrome浏览器插件来协助调试。 !!! 本插件只能解决简单请求的跨域调试(点击搜索什么是简单请求)。对于非简单请求的OPTION预检(点击搜索什么是预检请求)以及线上服务器也有跨域...
功能:-在您的Google Chrome浏览器中阻止横幅广告-用蔬菜GIF替换广告-4种不同的GIF轮播播放权限:像常见的广告阻止扩展程序一样,我们确实需要每个网站都具有默认权限才能删除广告或弹出式窗口,例如嵌入式视频和...
任务1 初识JavaScript;学习目标;JavaScript概述;...Google Chrome:目前市场占有率较高的浏览器,具有简洁、快速的特点 Mozilla Firefox:一款优秀的浏览器,市场占有率低于Google Chrome Safari:主要应用在苹
AdwCleaner 是一款专业用于浏览器劫持修复的工具,支持 IE、Firefox、Google Chrome、Opera…等各种常见浏览器。adwcleaner是专门用来去除浏览器广告实用工具。adwcleaner主要是为用户清除浏览器使用中经常出现广告...
Tampermonkey是Google Chrome浏览器中最受欢迎的用户脚本管理器。 特征: 管理和编辑所有用户脚本单击两次启用和禁用脚本在不同的Chrome实例之间轻松同步脚本通过URL从userscripts.org搜索脚本(启用了TamperFire)...
滴管浏览器扩展 滴管是Web浏览器扩展程序,可帮助您从网页或颜色选择器中选择和管理调色板。... 您可以在找到更多信息,帮助和常见问题解答。 错误和想法 您可以在报告错误和想法。 执照 此扩展是根据。