欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

前端初探--面经总结(1): js重要概念

程序员文章站 2022-06-09 21:39:27
...


作为一名前端入门菜鸟,最近经历了春招实习面试的蹂躏,结合小一年的前端学习,项目开发的经历,尝试总结学习过程中遇到的问题,分享出来,与诸位学习前端的朋友互相交流,能力有限,有不足和错漏之处,希望能得到大家的指正和帮助!
千里之行,始于足下,学习之路漫漫,就此开始吧~

ES6的新特性

ES6: 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版。
目前ES标准每年发行一次,按照命名规则即:ES7(ES2016), ES8(ES2017)… 一些情况下ES6也泛指ES2015及之后的新增特性,虽然之后 的版本应当称为ES7、ES8等。
ES6新标准为解决ES中没有类等问题,添加了许多新特性。学习ES6很有必要,毕竟技术在不断更新嘛~当前前端主流的框架Vue、react等也是采用ES6的语法来实现的。

作用域

ES6相比较ES5,新增了块级作用域。ES5只有全局作用域(全局变量) 和 函数作用域

为什么要新增块级作用域?

ES5只有函数作用域会使用中造成的一些意料之外的问题:

1. 变量提升导致内层变量可能会覆盖外层变量
eg:

// 只有全局变量
var i = 5;
function func1() {
	console.log(i);
}
func1() // 5, 打印的是全局变量5

//有同名的内层函数变量,内层变量覆盖掉外层全局变量
var i = 5;
function func() {
	console.log(i);
	if (true) {
		var i = 6;
	}
}
func(); // undefined, 

func()中,由于变量提升,定义的函数变量 i = 6, 覆盖掉了全局变量5,而打印是在局部变量定义前,因此结果为undefined

2.用来计数的循环变量泄露为全局变量

for (var i = 0; i < 10; i++) {  
    	console.log(i);  
}  
console.log(i);  // 10

块级作用域关键字: let const

ES6下新增了let和const关键字来声明变量,不同于var关键字,没有变量提升。但是要注意let 和const 具有暂存性死区特性

  1. let
    let 关键字用来声明一个在代码块(块级作用域, { }包裹的部分)生效的变量。
  2. const
    (未完待续~)
相关标签: javascript es6/es7