JavaScript语言精粹_鸡肋

==

  JavaScript有两组相等运算符:===,==,!==,!=,前面一组比较类型和数值,后面一组只比较数值。

with语句

  JavaScript提供了一个with语句,本意是想用来快捷地访问对象的属性。但它有时的结果可能是不可预料的,所以应该避免使用它。

eval

  使用eval形式的代码会更加难以阅读,这种形式将是的性能显著降低,因为它须运行编译器,但也许只是为了执行一个微不足道的赋值语句。它会让JSLint失效,因此该工具检测问题的能力也会显著降低。

continue语句

  代码通过重构移除continue语句之后,性能都会得到改善

switch贯穿

  除非明确的中断流程,否则每次条件判断后都贯穿到下一个case条件

位运算符

  JavaScript有着与Java相同的一套位运算符,在大多数语言中,这些位运算符接近于硬件处理而且非常快,但在JavaScript中,它们非但不是硬件处理,而且非常慢,所以JavaScript很少被用来执行位操作。

  位运算符出现在JavaScript中降低了这门语言的冗余度,使得bug更容易被隐藏起来。

function语句:var foo = function foo(){}

函数表达式:function foo(){}

时间: 2024-10-07 05:29:56

JavaScript语言精粹_鸡肋的相关文章

JavaScript语言精粹_第九章

在软件的产品生命周期中,通常他们都会被修改,把一个正确的程序转化为另一个同样正确但风格不同的程序,是一个极具挑战性的过程. JavaScript包含大量脆弱的或有问题的特性,它们会妨碍我们写出优秀的程序.显然我们应该避免JavaScript中那些糟糕的特性,避免这些特性,就可以避免一大类潜在的错误. JavaScript的设计.实现和标准化的过程中,质量没有成为关注点,这增加了使用这门语言的用户避免其缺陷的难度.

JavaScript语言精粹_第四章

4.1 函数对象 在JavaScript中,函数就是对象.对象是"名/值"对的集合并拥有一个连到原型对象的隐藏链接.对象字面量产生的对象连接到Object.prototype.函数对象连接到Function.prototype(该原型对象本身连接到object.prototype) 每个函数对象在创建是也随带一个prototype属性,它的值是一个拥有constructor属性且至即为该函数的对象 函数可以存放变量,可以被当作参数传递给其他函数,也可以在返回函数. 因为函数是对象,所以

JavaScript语言精粹_第八章

JavaScript包含了少量可用在标准类型上的标准方法. Array array.concat(item...) 它包含array的浅复制并将1个或多个参数item附加在其后. array.join(separator) join方法将array构造成一个字符串,它将array中的每个元素构造成一个字符串,并用separate为分隔符把他们连接在一起,默认的separate是",",为了实现无间隔的连接,可以使用空字符串作为separate. array.pop() 移除array中

JavaScript语言精粹_第五章

5.1 伪类 它不让对象直接从其他对象继承,反而插入了一个多余的间接层,从而使构造器函数产生对象. JavaScript中,当一个函数对象被创建时,Function构造器产生的函数对象会运行类似这样的一些代码 this.prototype = {constructor:this}; 新函数对象被赋予一个prototype属性,其值是包含一个constructor属性值为该新函数对象.该prototype对象是存放继承特征的地方.因为JavaScript没有提供一种方法去确定哪个函数是打算用来作构

JavaScript语言精粹_糟粕

全局变量 JavaScript没有连接器(linker),所有的编译单元都载入一个公用的全局对象中. 一共有3种方式定义全局变量. 1. var foo = value; 2. window.foo = value; 3. foo = value; 这本来是为方便初学者而有意让变量在使用前无需声明,但忘记声明变量是一个非常普遍的错误,而JavaScript的策略是让那些忘记预先声明的变量成为全局变量,这导致查找bug非常困难. 作用域 JavaScript的语法来源于C,在大多数语言中,一般来说

JavaScript语言精粹 笔记01

内容比较简单,只是从头梳理一下JS的知识 语法空白标识符数字字符串语句 对象对象字面量检索更新引用原型反射枚举删除减少全局变量污染  语法 1 空白 空白可能表现为格式化字符或注释的形式.空白通常没有意义,但是偶尔必须用它来分割字符序列,否则它们就会被合并成一个单一的符号.例如: var that = this; var 和that之间的空格是不能去掉的,其他的空格都可以被移除. JS提供两种注释: /* */ // 建议使用//,因为/* */中要注释的内容可能包括字符 */ 而报错,例如:

javascript语言精粹----笔记【转载】

javascript语言精粹----笔记 1.6种值会为假(==false),分别是false,null,undefined,' ',0,NaN 2.typeof有6种值,分别是'number','string','boolean','undefined','function','object';其中typeof(null),结果是'object' 3.number类型总是64位浮点数,两个整数相除也可能出现非整数结果 4.如果第一个运算数的值为假,那么运算符&&产生它的第一个运算数的值.

读《JavaScript语言精粹》的一些感言

最近看了<JavaScript语言精粹>,并且连着看了两遍,如果非要用言语形容的话,那我只能用4个字来形容:相见恨晚.其中的一些经验经过这么多年的摸索其实也了然,但是作者用这么浅薄的书把有着深厚蕴含的她深刻暴露出来的确值得我辈去拜读.JavaScript当初以风卷残云般的速度统治了浏览器端,其发布到正式成为ECMA规范也就1年多的时间,未经大规模检验的她,的确存在些糟粕性的语法,但其基于原型继承及函数式编程思想等等优秀的想法将其提升到语言的另一个层次上.以作者的话来说就是:JavaScript

JavaScript语言精粹 笔记05 正则表达式

正则表达式 正则表达式以方法的形式被用于对字符串中的信息进行查找.替换画图提取操作.可处理正则表达式的方法有:regexp.exec, regexp.test,string.match, string.replace, string.search, 和string.split. 结构 有两个方法来创建一个RegExp对象.优先方法是使用正则表达式字面量.正则表达式被包围在一对斜杠中.有3个标志能在RegExp中设置,分别为g.i.m. // 构造一个匹配JavaScript字符串的正则表达式对象