【JS】【Core】变量,变量声明,变量作用域

变量声明

在JS中,使用一个变量之前应当先声明,变量是使用关键字 var 来声明的。

例如:

var i;
var sum;
或
var i, sum;
或
var message = "hello";
var i = 0, j = 0, k = 0;


  • 如果未在 var 声明语句中给变量给定初始值,那么虽然声明了这个变量,但在给它存入一个值之前,它的初始值就是 undefined
  • JS变量可以是任意数据类型,例如:

var i = 10;
i = "ten";

  • 使用 var 语句重复声明变量是合法且无害的。如果重复声明带有初始化器,那么这就和一条简单的赋值语句没什么两样。
  • 如果试图读取一个没有声明的变量的值,JS会报错

变量作用域

在函数体内,局部变量的优先级高于同名的全局变量。

函数作用域和声明提前

JS的函数作用域是指在函数内声明的所有变量在函数体内始终是可见的,变量在声明之前甚至已经可用,JS的这个特性被称为声明提前,即JS函数内声明的所有变量都被“提前”至函数顶部。

例如:

var scope = "global";
function f(){
    console.log(scope);   // 输出“undefined”,而不是“global”
    var scope = "local";  // 变量在这里赋初始值,但变量本身在函数体内任何地方均是有定义的
    console.log(scope);   // 输出“local”
}

上述过程等价于:

var scope = "global";
function f(){
    var scope;            // 在函数顶部声明了局部变量
    console.log(scope);   // 变量存在,但其值是“undefined”
    scope = "local";      // 变量在这里赋初始值,但变量本身在函数体内任何地方均是有定义的
    console.log(scope);   // 输出“local”
}

作为属性的变量

当声明一个JS全局变量时,实际上是定义了全局对象的一个属性。

当使用 var 声明一个变量时,创建的这个属性是不可配置的,也就是说这个变量无法通过delete运算符删除。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值