~~~var 定义的变量存在变量提升;
~~~同时存在函数声明和变量声明时,函数声明优先级高于变量声明
~~~一个非匿名立即执行函数的函数名 相当于 const 定义的,是只读的,修改会报错!!!
~~~作用域,查找变量定义,会先在作用域中查找,找不到再去全局查找。
~~~arguments 和实参的关系:
严格模式下,arguments和实参是相互独立的,不会互相影响,但是在非严格模式下,两者会互相影响。
~~~数组方法: slice 不改变数组, splice 会改变原数组!!!
~~~for+定时器输出 i, 如果 使用 var 定义, 最终输出的都是最终的值,而不会输出累加值
~~~类型相同, 字符串比较大小分为以下几种类型:
1: 'a' 与 ’100a‘ 这种 比较,由于 会将字符串转成数字形式, a转成数字就是 NaN, NaN与任何类型比较都是 false
2. ‘99’ > ‘88’,转成数字88和99的比较了
3. ‘1’< ‘1yasd’ true, 如果字符串存在包含关系,那么包含的大于被包含的!!
4 ‘77asd’>'66asd' true ,这种的话,数字头部数字大的,字符串也大!!!
~~~ + - 号 在js中除了加和减还有正和负的意思 所以: --[负负得正]++1+1 其实就是 ++[正正还是正]1+1 =2!!!
~~~
var a = 10; { // 这里function 会提升,执行一次局部a = 全局a的操作 a = 90; function a() { } a = 30; 这里打印 a= 30 } // 外面打印 a = 90
~~~ [1, 2, 3,] + [4, 5, 6] = [1,2,34,5,6] => 因为 数组中最后一个逗号会被省略!! 但是第一个不会
=》 【1,2,3】+【,4,5,6】=> [1,2,3,4,5,6]
~~~ js 中最大数和最小数 分别是 Infinity 和 -Infinity
~~~ Number 和Bigint 类型的数,一般来说是Bigint 可以表示的数大于 Number,但是 有个特例,就是 Infinity 【typeof Infinity === Number!!!】
~~~ 逻辑与和或:
a || = b 表示 如果a == true, 赋值a,否则 赋值 b
a &&= b 表示: 表示 a==true,会将b赋值给a,否则a == a !!!
~~~ [] == ![] => true ,空数字逻辑运算 为真!!!,但 值为 0 false值也为0 所以 [] == ![] => true 。 if([]) {}else{} 不会进入 else ,但是 ![] ==0 => true , [] == [] false。