shinena / myProject

1 stars 0 forks source link

《你不知道的Javascript》2:类型和语法 #58

Open shinena opened 1 year ago

shinena commented 1 year ago

类型

Javascript有七种内置类型,null、undefined、number、string、boolean、symbol(es6新增)和object。除object之外,都是基本数据类型。可以使用typeof运算符查看,typeof返回的是一个字符串。

变量没有类型,只有值。他们持有的值有类型。类型定义了值的行为特征。

undefined是值的一种。undeclared则表示变量还没有声明过。typeof对两个变量都返回undefined。

shinena commented 1 year ago

JavaScript中的数组是通过数字索引的一组任意类型的值。字符串和数字类似,但是行为特征不同。 JavaScript中的数字包括“整数”和”浮点型“。

基本类型中定义了几个特殊的值:

数字类型有几个特殊的值:NaN(not a number)、+Infinity、-Infinity和 -0。

简单标量基本类型值(字符串和数字等)通过值复制来赋值/传递,而复合值(对象等)通过引用复制来赋值/传递。 Javascript中的引用和其他语言中的引用/指针不同,它们不能指向别的变量/引用,只能指向值。

shinena commented 1 year ago

原生函数

JavaScript的内建函数,也叫原生函数。 常用的原生函数有:

Javascript为基本类型值提供了封装对象,称为原生函数。它们为基本数据类型值提供了该子类型所特有的方法和属性。 对于简单标量基本类型值,如果要访问它的length属性或String.prototype方法,Javascript引擎会自动对该值进行封装来实现对这些属性和方法的访问。

shinena commented 1 year ago

强制类型转换 1.值类型转换

2.抽象值操作 toString() toNumber(): true---1 false---0 undefined---NaN null---0 对字符串的处理基本遵循数字常量的相关规则/语法。处理失败时返回NaN。 对象(包括数组)会首先被转换为相应的基本类型值,如果返回的是非数字的基本类型值,则再遵循以上规则将其强制转换为数字。 为了将值转换为相应的基本类型值,抽象操作toPrimitive会首先检查该值是否有valueof()方法。如果有并且返回基本类型值,就使用该值进行强制类型转换。如果没有就使用toString()的返回值进行强制类型转换。如果valueof()和toString()均不返回基本类型值,会产生TypeError错误。

toBoolean()假值

假值的布尔强制类型转换结果为false。 假值列表以外的都是真值

显式强制类型转换

隐式强制类型转换(是其他操作的副作用) [] + {} // "[object object]" {} + [] // 0

||和&& 逻辑运算符(选择器运算符) &&优先级高于||

宽松相等和严格相等 ==允许在相等比较中进行强制类型转换,===不允许。

假值的相等比较