【面试重点第一节】js运算符、声明变量的方式

1.js运算符(基础)
按位与 &、按位或 |、按位异或 ^、按位非~、零填充左位移 <<、有符号右位移>>、零填充右位移>>>
【摘自一起走过的日子……:原文链接】Java中的<< 和 >> 和 >>> 详细分析
【摘自@Umbrella :原文链接】Javascript中的 位运算符 + 使用场景 + 性能对比 + 封装
2. 声明变量的方式var 、let、const的特点
【摘自lydia121:原文链接】let,const以及var三者的区别,面试经常会问哦!

1. es6新增的声明变量的方式 let,特点:

 a. 作用域是块级作用域(在ES6之前,js只存在函数作用域以及全局作用域);
{
    let a =100;
    console.log(a); //100
}
b. 不存在变量声明提前;
 {
     console.log(a);
     let a =100;// 报错 Uncaught ReferenceError: Cannot access 'a' before initialization
     at <anonymous>:2:17
 }
c. 不能重复定义;
 {
     let a =100;
     let a =200;
     console.log(a);//报错
}
 d. 存在暂时性死区:可以这样来理解;
	var a=1;
	if(true){
	 console.log(a)
	 let a=2;
	}

① 在一个块级作用域中,变量唯一存在,一旦在块级作用域中用let声明了一个变量,那么这个变量就唯一属于这个块级作用域,不受外部变量的影响;

② 无论在块中的任何地方声明了一个变量,那么在这个块级作用域中,任何使用这个名字的变量都是指这个变量,无论外部是否有其他同名的全局变量;

③ 暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

④ 暂时性死区的意义:让我们标准化代码。将所有的变量的声明放在作用域的最开始。

2. es6新增的声明变量的方式const ,特点:
a.用于声明常量,初始化时必须赋值;
b.只读不允许重新赋值,并且也不能重复定义;
c.与let一样,都是块级作用域;
d.存在暂时性死区;
e.不存在变量提升;

 {
const a=1;(重新给常量a赋值会报错 )
a=3;// Uncaught TypeError: Assignment to constant variable.(错误:赋值给常量)
}

3. es5声明变量的方式var ,特点:
a.es5以前没有块级作用域,var属函数作用域;在某函数中声明一个变量,则此变量只作用域此函数内;
b.存在变量提升;
————————————————

【问】let,const声明的变量在Window中无法获取到的问题?
【摘自alex夏夜:原文链接】-原文(关于let声明的变量在window里无法获取到的问题)

  • ES5中声明变量的方式只有两种: var 、 function;
  • ES6新增 4种声明变量的方式let、const、import、class,加上ES5总共6种;
  • 还需要了解顶层对象:浏览器环境中顶层对象是window,Node中是global对象;
  • ES5中,顶层对象的属性等价于全局变量。;
  • ES6中,有所改变:var、function声明的全局变量,依然是顶层对象的属性;let、const、class声明的全局变量不属于顶层对象的属性,也就是说ES6开始,全局变量和顶层对象的属性开始分离、脱钩。 —《引用:alex夏夜》

/文中有错误和不对的地方欢迎大家批评指正;文中多处引用各位大佬的内容和链接已经署名。/

展开阅读全文
©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读