变量、标识符及变量提升

一、变量的概念

变量就是给“值”起名字,然后引用这个名字,就等同于引用这个值。变量的名字就是变量名;

1、注意事项:

(1)、如果只是声明变量而没有赋值,则该变量的值是undefined。

undefined是一个特殊的值,表示“无定义”


var a;
a // undefined

(2)、进行变量赋值的时候,没有写var命令,这条语句也是有效的。


var a = 1;
// 基本等同
a = 1;

但是,不写var的做法,不利于表达意图,而且容易不知不觉地创建全局变量,所以建议总是使用var命令声明变量。

(3)、可以在同一条var命令中声明多个变量。


var a, b,c;

var a=b=c=21;
//a=undefined;
//b=undefined;
//c=21

(4)、

JavaScript 是一种动态类型语言,也就是说,变量的类型没有限制,变量可以随时更改类型。


var a = 1;
a = 'hello';

上面代码中,变量a起先被赋值为一个数值,后来又被重新赋值为一个字符串。第二次赋值的时候,因为变量a已经存在,所以不需要使用var命令。

(5)、

使用var重新声明一个已经存在的变量,是无效的;


var a=1;
var a;//此操作毫无意义

但是,如果第二次声明的时候还进行了赋值,则会覆盖掉前面的值。


var a = 2;
var a = 4;
//代码执行到此行时,a=4;

上述代码等同于下面这段代码


var a = 2;
var a;
a = 4

二、标识符:

标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符就是变量名,以及后面要提到的函数名。JavaScript 语言的标识符对大小写敏感,所以aA是两个不同的标识符。

标识符有一套命名规则,不符合规则的就是非法标识符。JavaScript 引擎遇到非法标识符,就会报错。

简单说,标识符命名规则如下。

1、第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_)。

2、第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字0-9

下面这些都是合法标识符。


arg0
_tmp
$elem
π

下面这些则是不合法的标识符。


1a  // 第一个字符不能是数字
23  // 同上
***  // 标识符不能包含星号
a+b  // 标识符不能包含加号
-d  // 标识符不能包含减号或连词线

三、变量提升

JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。


console.log(a);
var a = 1;

上面代码首先使用console.log方法,在控制台(console)显示变量a的值。这时变量a还没有声明和赋值,所以这是一种错误的做法,但是实际上不会报错。因为存在变量提升,真正运行的是下面的代码。


var a;
console.log(a);
a = 1;

最后的结果是显示undefined,表示变量a已声明,但还未赋值。

变量提升的五种情况:

  1. 不管判断条件是否成立变量都进行提升
  2. 变量提升只发生在等号左边
  3. return后面的代码不进行变量提升;下面的不受影响;
  4. 变量名重复,不再重新声明,执行后重新定义;
  5. 匿名函数不需要进行变量提升
posted on 2019-01-19 16:43 <a href='https://www.cnblogs.com/qingtiao/'>雾里青条</a> 阅读(...) 评论(...)  <a href ="https://i.cnblogs.com/EditPosts.aspx?postid=10292211" rel="nofollow">编辑</a> <a href="#" onclick="AddToWz(10292211);return false;">收藏</a>

原文地址:https://www.cnblogs.com/qingtiao/p/10292211.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值