💜《JavaScript 语言精粹》附录之糟粕篇

45 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情

==

JavaScript 有两组相等运算符:===!==,以及它们邪恶😈的孪生兄弟 ==!=

==!= 只有在运算数类型一致时才会做出正确的判断,如果两个运算数是不同的类型,它们试图去强制转换值的类型。

  • 建议永远不要使用== 和 !=;相反,请始终使用 === 和 !==。

with

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

eval

eval 函数传递一个字符串给 JavaScript 编译器,并且执行其结果。

eval("myValue = myObject." + myKey + ";");

Function 构造器是 eval 的另一种形式,同样也应该避免使用它。

continue 语句

continue 语句跳到循环的顶部。一段代码通过重构移除 continue 语句之后,性能会得到改善。

swtich 穿越

缺少块的语句

If、while、do 或 for 语句可以接受一个括在花括号中的代码块,也可以接受单行语句。

++ --

递增和递减运算符使得程序员可以用非常简洁的风格去编码。

位运算符

属性
&and 按位与
|or 按位或
^xor 按位异或
~not 按位非
>>带符号的右位移
>>>无符号的(用0补足的)右位移
<<左位移

function 语句对比 function 表达式

JavaScript 既有 function 语句,同时也有 function 表达式

一个 function 语句就是其值为一个函数的 var 语句的速记形式。

一个语句不能以一个函数表达式开头,因为官方的语法假定以单词function 开头的语句是一个 function 语句

类型的包装对象

JavaScript 有一套类型的包装对象。例如:

new Boolead(false)

会返回一个对象,该对象有一个 valueOf 方法会返回被包装的值。这其实完全没有必要,并且有时还令人困惑。不要使用 new Boolean, new Number 或 new String

此外也请避免使用 new Object 和 new Array。可使用 { } 和 [ ] 来代替。

new

JavaScript 的 new 运算符创建一个继承于其运算数的原型的新对象,然后调用该运算数,把新创建的对象绑定给 this

void

void 是一种类型,表示没有值。

void 是一个运算符,它接受一个运算数并返回 undefined。