Javascript 基础
基础和常用的知识点
反引号
1 | let name = "John"; |
类型转换
1 | let apples = "2"; |
??运算符
a ?? b == (a !== null && a !== undefined) ? a : b;
1 | let firstName = null; |
函数
回调函数
1 | function ask(question, yes, no) { |
箭头函数
1 | let func = (arg1, arg2, ..., argN) => expression; |
可选链
obj?.prop—— 如果obj存在则返回obj.prop,否则返回undefined。obj?.[prop]—— 如果obj存在则返回obj[prop],否则返回undefined。obj.method?.()—— 如果obj.method存在则调用obj.method(),否则返回undefined。
对象类型
1 | let user = { |
对象中所有key的类型均是字符串或Symbol
- user.age = 1: “.”访问方式中的key默认就是一个字符串。(age默认转成字符串”age”)
- user[age] = 1 or user[“age”]: “[]”访问方式中的key可以是一个变量,也可以是一个字符串;如果是变量,最终存储的key值即为该变量对应的值(如果该变量值不是字符串,会被强制转为字符串)。
对象强制类型转换
依次自动尝试对象中以下存在的方法:
[Symbol.toPrimitive]
1 | obj[Symbol.toPrimitive] = function(hint) { |
toString/valueOf
1 | let user = {name: "John"}; |
内建对象比较方法
有一个特殊的内建方法 Object.is,它类似于
=== 一样对值进行比较,但它对于两种边缘情况更可靠:
- 它适用于
NaN:Object.is(NaN, NaN) === true,这是件好事。 - 值
0和-0是不同的:Object.is(0, -0) === false,从技术上讲这是对的,因为在内部,数字的符号位可能会不同,即使其他所有位均为零。
在所有其他情况下,Object.is(a, b) 与
a === b 相同。
Comments
Comment plugin failed to load
Loading comment plugin