这章操作符有些多,还挺有意思的,虽然用的不多,但是身为计算机出身的起码要会吧。
3.4.6 String类型
ECMAScript中的字符串是不可变的。
let lang = 'Java'
lang = lang + 'Script'
这里,首先会分配一个足够容纳10个字符的空间,然后填充上‘Java’和‘Script’,最后销毁原始的字符串‘Java’和字符串‘Script’。
模板字符串
将表达式转换为字符串时会调用toString():
let foo = {toString: () => 'World'};
console.log(`Hello,${foo}!`); // Hello World
3.4.7 Symbol类型(第四版称其为符号)
需要使用Symbo()函数初始化,因为是原始数据类型,所以:
let sym = Symbol();
console.log(typeof sym); //symbol
3.5操作符
2.一元加和减操作符
类似这种规则大致相同,这里转为数值型Number
let s1 = '01' s1 = +s1 //值为数值1
let s2 = '1.1' s2 = +s2 // 值为数值1.1
let s3 = 'z' s3 = +s3 //值为NaN NaN也是数值型 typeOf NaN 为number
let s4 = false s4 = +s4 //值为数值0
let s5 = 1.1 s5 = +s5 //值为数值1.1 不变
let o = { o = +o //值为数值-1 会先调用他们的valueOf或toString方法转换
valueOf(){
return -1
}
}
位操作符
1、按位非
2、按位与
3、按位或
4、按位异或
5、左移
6、有符号右移
7、无符号右移
3.5.4乘性操作符
3.5.5除法操作符
3.5.6取模操作符
指数操作符
console.log(Math.pow(3,2)) // 9 与3 ** 2一样
console.log(Math.pow(16,0.5)) // 4
let a = 3
a **= 2
console.log(a) //9
加法操作符
遇到布尔值无论加减,都会调用Number进行转值
有趣的是这里
console.log(-0 - 0) // -0
console.log(-0 + 0) // 0
减法运算符
有趣的是这里,看起来null加上+或者-会被认为是+0和-0
console.log(-undefined) // NaN
console.log(-null) // -0
3.5.7关系操作符
3.5.8相等操作符
3.5.11逗号操作符
ok,今天到这里,虽然切得图比较多,但是都代码试过了,要动手哦,感觉写笔记进度好慢,但是还是挺有意思的。