JS基础知识
严格模式
(1)所谓的严格模式就是为了不兼容老版浏览器的相关属性要求,应用最新的浏览器要求去规范js代码
(2)用法:如果是整个脚本就是在开始加"use strict",当然也是可以在每个函数中头部加上"use strict"声明函数遵循严格模式
(3)严格模式与默认模式的区别:
- 函数中不允许出现相同的形参,对象也不可以有相同的键值
- 不可删除对象中的属性,除非有configurable: true才可以;也无法删除变量
- 不存在变量提升
- 静止使用with语句
- 增设eval作用域(原先只有函数作用域和全局作用域)
let
使用let去声明变量如果变量名一致会直接报错,同时let声明的变量具备作用域。
不同数据类型
一共为8种数据类型:Number, String,Bollean, BigInt, Null, undefined, Object, Symbol
(1)在判断时,null和undefined就像一对恋人,只有他们在情况下相同(他们在情况下不会做任何的强制类型转化),因此导致其余情况下都无法返回true的结果。
但是在(< > <= >=)的时候,Null会被转化为数字0进行比较,undefined转化为NaN。
(2)" \t \n" - 2 会返回 -2 (强制类型转化,前面的字符串转化为0)
空值合并运算符(??)
?? 只用于控制合并,当??前面是null或者undefined的时候取后面的数据,如果前面不是null或者undefined那么返回第一个数据
let a = undefined ?? 1 // a = 1