所在的位置: js >> js发展 >> 前端随笔16变量的这些事

前端随笔16变量的这些事

前沿:此次内容主要是关于变量的一些知识,参考的文章及网站:《ECMAScript6入门》、MDN、W3School

一基础知识点

1.变量

首先我们要明确变量只是一个容器,用于存储任何数据,其本身没有任何特值。

es6以前声明变量使用var关键字,es6新增let和const关键字。后期编程建议使用let(const)声明变量。

const表示声明的变量是一个常量,第一次赋值之后再次给该变量赋值会报错,其他特性与let相同。

下面主要讲讲var和let的区别。

区别1作用域不同

let作用域是块级作用域,而var作用域是函数作用域。块级作用域范围小于函数作用域范围。(块级作用域和函数作用域的区别后面说)

{vara=1;letb=2;}a;//1b;//ReferenceError:aisnotdefined.因此let特别适合即用即销的场景,例如循环计数器。下面的代码中如果使用var声明计数器i,i的值会保存到当前作用域内,可能会对后面产生影响。

for(vari=1;i10;i++){}i;//10for(leti=1;i10;i++){}i;//ReferenceError:aisnotdefined.区别2变量提升

var声明的变量可以先使用再声明,而let声明的变量不行。强行先使用变量再用let声明会报错。

区别3重复声明

let声明的变量不允许重复声明,而acr声明的变量可以。

//报错letm=1;letm=2;//报错letm=1;varm=2;//不报错varm=1;letm=2;区别4暂时性死区

其意思是只要块级作用域内有let声明的变量,那么该变量就遵循let声明的变量的所有规则。

2.变量类型

变量类型特性Number整数和浮点数,使用parseInt()函数/parseFloat()函数可以将数值转化为整数和浮点数String字符串,使用toString()函数转化成字符串Booleantrue或者falseArray数组Object对象,数据以键值对的形式存在

注意:js中变量类型是动态变化的,因为在声明的时候不会设定数据类型,给变量赋什么类型的值,该变量就是什么类型

3.块级作用域

es5中只有全局作用域和函数作用域,这样会出现一些问题,例如上面例子中循环计数器i泄露,内层变量覆盖外层变量。es6新增块级作用域{}。给我的最直观的感受就是以前用于立即执行的匿名函数不再需要,我们可以用更简单的代码实现了,如下述代码

(function(){...}())//可以使用下面的代码替代{...}二学习体会

通过本次学习,对变量的认识又加深了一步,我们声明变量的方式更加多样化,针对不同的需求使用不同的声明方式会是我们的代码更加简洁易懂。




转载请注明:http://www.aierlanlan.com/tzrz/1845.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了