s

诡异js面试题&知识点

 

 

~~~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。

 

 

 

 

 

posted @ 2022-06-24 17:25  努力不搬砖的iori  阅读(33)  评论(0)    收藏  举报