1、什么是变量?
定义:变量就是用户定义的一个符号,用来指向计算机存储的用户定义的数据的整体 【变量——>(存储空间{用户定义的数据})】;变量就是用于存储数据的容器,用于保存变量或者表达式
2、变量分类
分类:全局变量、局部变量、常量
3、变量声明
变量的声明:基础语法中变量的声明使用关键字var
扩展:在ES6中,因为var的变量提升的特点会破坏函数结构,定义了一种新的声明方式 ,关键字let
4、变量命名规则
变量命名规则:
- 规则一:由字母数字下划线以及美元符号组成,其他符号不允许出现
- 规则二:不允许以数字开头命名
- 规则三:关键字以及系统保留字不允许作为变量
- 规则四:系统允许使用汉字作为变量,实际上不提倡使用汉字变量
- 规则五:命名建议使用驼峰规则或者使用下划线连接
5、全局变量
全局变量:全局变量指的是声明在全局作用域中的变量,特点是在文件所有的地方都可以访问到该变量
6、局部变量
局部变量:局部变量是指声明在函数作用域中的变量,或者使用let声明在块状作用域总共的变量
扩展:js基础中是没有块状作用域的,上面之所以这么说是因为在ES6中,let不会出现变量提升的情况,配合代码块形成另类的块状作用域和局部变量
7、常量
关键字:const
定义:常量表示的是一个固定的值的变量
特点:常量声明必须赋值,且只能在声明的时候赋值一次,之后不允许重新赋值
8、什么是弱类型语言?
介绍:JavaScript是弱类型语言,那什么是弱类型语言?弱类型语言的定义是:弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。
特点:无需指定数据类型,变量会根据赋值的数据类型自动转换数据类型
易错点:空与未定义的区别1
- 未定义undefined:var 变量名;这里变量没有赋值,所以变量指向未定义
- 空:var 变量名=‘’;空表示赋值的是空字符串,但是实质上是有赋值的,值是字符串,只不过是空字符串而已
9、变量提升
变量提升:变量提升指的是在js总使用var符号声明的变量,在执行的时候会有限提升到作用域的最前面;即使是var s=11;也会分解成两个步骤,var s;s=11;js会将声明步骤提升;所以存在可以先使用后声明的现象
注意:不仅变量会提升,function声明函数的时候,函数也会出现提升的现象