现代 JavaScript 参考(10)

myVar 可以是任何 一等公民(first-class citizen) (变量, 函数, 布尔值) ,但它会被转换成一个布尔值,因为它会在布尔上下文中进行就值。

逻辑 ! 操作符后面

如果其单独的操作数可以转换为 true ,则此操作符返回 false ; 否则返回 true 。

!0 // true -- 0 是 falsy(假) 值,所以它返回 true !!0 // false -- 0 是 falsy(假) 值, 所以 !0 返回 true , 所以 !(!0) 返回 false !!"" // false -- 空字符串是 falsy(假) 值, 所以 NOT (NOT false) 等于 false

通过 Boolean 对象构造函数

new Boolean(0) // false new Boolean(1) // true

在一个三元表达式求值时

myVar ? "truthy" : "falsy"

myVar 在布尔上下文中进行求值。

扩展阅读 静态方法 简单说明

static 关键字用于声明静态方法。静态方法是属于 class(类) 对象,而该类的任何实例都不可以访问的方法。

简单的代码示例 class Repo{ static getName() { return "Repo name is modern-js-cheatsheet" } } // 请注意,我们不必创建 Repo 类的实例 console.log(Repo.getName()) //Repo name is modern-js-cheatsheet let r = new Repo(); console.log(r.getName()) // 抛出一个 TypeError: repo.getName is not a function 详细说明

静态方法可以通过使用 this 关键字在另一个静态方法中调用,这不适用于非静态方法。非静态方法无法使用 this 关键字直接访问静态方法。

在静态方法调用另一个静态方法。

要在在静态方法调用另一个静态方法,可以使用 this 关键字 ,像这样;

class Repo{ static getName() { return "Repo name is modern-js-cheatsheet" } static modifyName(){ return this.getName() + '-added-this' } } console.log(Repo.modifyName()) //Repo name is modern-js-cheatsheet-added-this 在非静态方法调用静态方法。

非静态方法可以通过2种方式调用静态方法;

###### 使用 class(类) 名

要在非静态方法访问静态方法,我们可以使用类名,并像属性一样调用静态方法就可以了。 例如ClassName.StaticMethodName:

class Repo{ static getName() { return "Repo name is modern-js-cheatsheet" } useName(){ return Repo.getName() + ' and it contains some really important stuff' } } // 我们需要实例化这个 class(类),以使用非静态方法 let r = new Repo() console.log(r.useName()) //Repo name is modern-js-cheatsheet and it contains some really important stuff

###### 实用构造函数

静态方法可以在构造函数对象上作为属性被调用。

class Repo{ static getName() { return "Repo name is modern-js-cheatsheet" } useName(){ //作为构造函数的属性来调用静态方法 return this.constructor.getName() + ' and it contains some really important stuff' } } // 我们需要实例化这个 class(类),以使用非静态方法 let r = new Repo() console.log(r.useName()) //Repo name is modern-js-cheatsheet and it contains some really important stuff 扩展阅读 词汇表 作用域(Scope)

在上下文之中有着 “可见的 (visible)” 值和表达式,又或者是可以被引用的。如果变量或是表达式并不在 “当前作用域中”,那么它将会是不可用的。

来源: MDN

变量的可变性(Variable mutation)

如果变量在其初始值后发生变化时我们就称其为可变的。

var myArray = []; myArray.push("firstEl") // myArray 发生改变

如果一个变量不能被改变的话,我们会说这个变量是 不可变的 (immutable) 。

查看 MDN Mutable 文章 了解更多详情。

原项目

mbeaudru / modern-js-cheatsheet
Cheatsheet for the JavaScript knowledge you will frequently encounter in modern projects.
https://mbeaudru.github.io/modern-js-cheatsheet/

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wywxjf.html