面试细节(JS)

1.var let const

es6 只一个js的规范

let 和 var 区别

1.let 没有变量提升
2.作用域不同 let是块级作用域 var是函数作用域
3.在同一作用域内 不能用let 同时声明同一个变量
4. let 有严格的作用域

const 和 var

const 和let极为相似 所以const 除了以上的几个还有几个特殊的特性
1.const 声明之后必须赋值 且赋值的常量不能更改 但是如果你赋值的是一个引用 那么 就可以更改

2.箭头函数

1.普通 function 的声明在变量提升中是最高的,箭头函数没有函数提升
2.箭头函数没有属于自己的thisarguments
3.箭头函数不能作为构造函数,不能被 new,没有 property
4.不可以使用 yield 命令,因此箭头函数不能用作 Generator 函数
5.不可以使用 new 命令,

3. map set

  1. set里不能有相同的值 可以用来解决常见的去除一个数组内相同值的
let arr1=[1,2,2,3,3,4,5,5,6]
 let arr2=[...new Set(arr1)]
  1. for in forEach for of
    都是进行遍历操作 for of 和 forEach 是对数组进行操作
    for in 是对 对象进行操作

4.作用域

 var n=123
        function f1(){
            console.log(n);// 123
        }
        function f2(){
            var n=456
            f1()
            console.log(n); // 456
        }
       f2()
        console.log(n); // 123

//----------------------------------------------------
			var a = 10;
			function test(){
			//var a;
			a = 100;
			console.log(a);//?
			console.log(this.a);
			var a;
			console.log(a);//?
			}
			test();
			//100 10  100
//--------------------------------------------
			( function(){
			//a作用域函数作用域
			var a=b=3 //实际上等同于  b=3(b就是全局变量);var a=b;
			console.log(a); // 3
			})();
			console.log(a,b) // a is not deined(因为a是函数作用域  不是全局作用域); 3
//-----------------------------------------------------
function fun(){
console. log(n);//?123  因为函数中没有n  向全局变量去找
n = 456; // 因为没有n  找的是全局中的n  改的也是全局中的n
console. log(n); //?456  
}
var n = 123;fun(n);
console.log(n) //? 这里的n已经被更改  456

函数 都是挂载在window上的 所以会先找到

arguments 是传给函数的参数形成的伪数组

this指向

  function f1(){
            console.log(this.x);
        }
        var obj={
            x:10,
            f:f1
        }
        var x=100
        var f2=obj.f
        f2()  //100
        obj.f()  //10
 var f2=obj.f
 //这个时候obj.f直接挂载到了window上
// this 指向的就是 window
   obj.f()  //10
    //这个时候f直接挂载到了obj上
// this 指向的就是 obj

call apply

apply 后跟要指向的对象 apply后传参要传的是数组 call后是数字

function f(s){
console.log(this.a, s); //2,3
return this.a + s;
}
var obj = {
a: 2
}
var f2 = function(){
return f.apply(obj,arguments);
}
var b = f2(3);
console.log(b); //5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值