JavaScript:打破所有规则 错误的东西也许是有用的

北京时间今天凌晨,来自Twitter的前端工程师Angus Crol,在柏林举办的JSConf会议上,进行了题为”Break all the Rulez“的演讲,主要讲了一些我们通常认为是错误的不该使用的东西,其实是有用的.本文最下面有演讲用的slides.远在美国的JavaScript之父看了slides也说:我同意其中大部分观点(看来还是有问题?).

下面我把要点简单翻译一下,不做扩展解释.

with语句

为什么不去使用它?

1.意外的运行结果,可能隐式创建全局变量

2.闭包作用域解析过多消耗

3.后期编译

有人说,ES5的严格模式可以防止隐式创建全局变量(不用var),这样能减少with的一个问题.但是…

严格模式也不能使用with啊.

为什么说它是有用的?

1.构建浏览器开发者工具

//Chrome Developer Tools IS._evaluateOn =   
function(evalFunction, obj, expression) {     IS._ensureCommandLineAPIInstalled();     expression =

时间: 2024-09-19 06:39:11

JavaScript:打破所有规则 错误的东西也许是有用的的相关文章

JavaScript Sort 的一个错误用法示例

 这篇文章主要介绍了JavaScript Sort 的一个错误用法示例,本文分析了一个Sort实例得到了这个错误用法并给出了解决方法,需要的朋友可以参考下     前不久同事的代码中出了一个很神奇的问题,大致流程是对一个由对象组成的数组进行排序,其中属性 a 用于排序,属性 b 作为一个优选条件,当 b 等于 1 的时候无论 a 值是什么,都排在开头 .这本是一个很简单的问题,问题就在于他用两次 sort 实现在这次排序,先根据 a 的属性排序,然后再根据 b 的值来排序.问题就出在第二次排序中

asp.net- VS报错:javascript 语言服务遇到错误且已关闭

问题描述 VS报错:javascript 语言服务遇到错误且已关闭 vs2013安装developer assistant插件后,在aspx页面写js脚本就提示如下错误,大家遇到类似问题吗? 解决方案 遇到过,,,,把那个插件卸载后重新安装后就可以了,,,,,,,,, 解决方案二: 估计是那个插件的问题吧,,

JavaScript新增样式规则(推荐)_javascript技巧

关键代码如下所示: <html> <head> <link rel="stylesheet" type="text/css" href="basic.css"> <script> window.onload=function(){ var sheet=document.styleSheets[0]; //[新增样式规则] // sheet.insertRule('.div1{font-size:16

《有效的单元测试》一2.3 如果测试了错误的东西就不好了

2.3 如果测试了错误的东西就不好了 在阅读和调试代码以找出不良系统行为的原因时,我却最终不止一次地回到了开始的地方.在找bug的过程中,尤其容易忽略的一个烦人细节是测试的内容.在挖掘代码时,我要做的头一件事情往往是运行所有测试,让它告诉我哪些正常,哪些不正常.有时我太过相信测试的名称.有时那些测试其实完全是在测试不同的东西.这与良好的结构有关--如果测试的名字错误地表达了要测试的内容,那就像是跟着错误的路标驾驶.你应该能够信任你的测试.几年前我为某个产品审计代码,该代码开发了已经超过十年.那是

javascript 小数乘法结果错误的处理方法_javascript技巧

一.用js计算 12.32 * 7  结果是多少? 答案:86.24000000000001   为什么会出现这种问题?怎么解决? js在处理小数的乘除法的时候有一个bug,解决的方法可以是:将小数变为整数来处理. 以上的计算可以改为: 12.32 * 100 * 7 /100 得出的结果是:86.24,正确.   另外再计算一下: 8.80 * 100 * 12 / 100 结果:105.60000000000002 38.80也会出现类似的问题.   精确度增加10倍: 8.80 * 100

JavaScript库 开发规则_javascript技巧

1. 保持无侵入性 我的HTML标记不想知道你的JavaScript代码. 2. 严禁修改和扩展Object.prototype! 这条很重要,因此需要一条完全针对它的规则.对象是JavaScript功能的基本构建模块,不要搞乱它们. 3. 不要过分扩展 对JavaScript内建对象的扩展越少越好.别误解我的意思.JavaScript的原生对象中有用的方法是有点少,有时不得不添加一两个自己的方法.但是,对于富有创造力的(库)程序员来说,添加这"一两个"方法是不够的.然而,请停下来!添

Javascript类型转换的规则实例解析_javascript技巧

类型转换可以分为隐式转换和显式转换,所谓隐式转换即程序在运行时进行的自动转换,显式转换则是人为的对类型进行强制转换.Javascript的变量是松散类型的,它可以存储Javascript支持的任何数据类型,其变量的类型可以在运行时被动态改变.请看示 例: var n = 10; n = "hello CSSer!"; n = {}; 上面的示例中,首先声明n变量并初始化其值为10(整数类型),接着将字符串"hello CSSer!"赋值给n,接着再赋一个对象给它,最

JavaScript this调用规则说明_javascript技巧

JavaScript函数调用规则一 (1)全局函数调用: 复制代码 代码如下: function makeArray( arg1, arg2 ){ return [this , arg1 , arg2 ]; } 这是一个最常用的定义函数方式.相信学习JavaScript的人对它的调用并不陌生. 调用代码如下: makeArray('one', 'two'); // => [ window, 'one', 'two' ] 这种方式可以说是全局的函数调用. 为什么说是全局的函数? 因为它是全局对象w

在Visual Studio 2013中试建了一个空白JavaScript项目,跳出错误 : DEP0800

问题描述 真是叫我抓狂发疯.上面写着:错误1错误:DEP0800:所需框架"C:ProgramFiles(x86)MicrosoftSDKsWindowsv8.1ExtensionSDKsMicrosoft.WinJS.2.01.0Microsoft.WinJS.2.0.appx"安装失败.错误0x80070005:从位置file:///C:/Program%20Files%20(x86)/Microsoft%20SDKs/Windows/v8.1/ExtensionSDKs/Micr