javascript中声明变量的关键字是什么


本文摘自PHP中文网,作者青灯夜游,侵删。

javascript中声明变量的关键字是var、let和const。var声明的变量可以用来保存任何类型的值,声明的范围是函数作用域;let声明的范围是块作用域;而const声明变量时必须同时初始化变量,且初始化后值不可再修改。

本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。

声明变量关键字var、let和const

ECMAScript变量是松散类型的,即变量可以用于保存任何类型的数据,每个变量只不过是一个用于保存任意值的命名占位符

1.var关键字

var声明的变量可以用来保存任何类型的值(在不初始化的情况下会保存一个特殊值undefined),像其他语言一样在javascript在定义变量的同时还可以对变量进行赋值,该变量被定义为一个保存所赋值的值的变量,因为javascript是动态语言,在初始化变量的时候不会将它标识为所赋值的数据类型,只是一个简单的赋值而已。随后不仅可以改变保存的值,还可以改变值的类型:

1

2

var message = "hi";

    message = 100;

1.1.var声明作用域

使用var操作符定义的变量会成为包含它的函数的局部变量。比如,使用var在函数内部定义一个变量,就意味这该变量将在函数退出时被销毁,我觉得这就是所说的垃圾回收

1

2

3

4

5

function test( ) {

        vart message = "hi";    //局部变量

    }

test( );

console.log(message);   //报错!

函数调用之后变量会随机被销毁,因此最后一行会报错。不过,在函数定义变量时省略var操作符时可以创建一个全局变量

1

2

3

4

5

function test( )  {

    message = "hi"; //全局变量

}

test( );

console.log(message);   //"hi"

只要调用一次函数test( )就会定义message这一全局变量,并且可以在函数外部访问。但是由于在局部作用域中定义的全局变量很难维护,所以一般不推荐这样做。

1.2.var声明提升

使用var关键字声明的变量会自动提升函数作用域顶部,即所谓的“提升”(hoist),也就是把所有变量声明都拉到函数作用域的顶部:

1

2

3

4

5

function fool( ) {

    console.log(age);

    var age = 28;

}

fool( );    //undefined

这里是不会报错的,而是显示undefined,ECMAScript在运行是会把它看成等价于如下的代码:

1

2

3

4

5

6

function fool( ) {

    var age;

    console.log(age);

    age = 28;

}

fool( );    //undefined

2.let声明

let跟var的作用差不多,但有着非常重要的区别。最明显的区别是let声明的范围是块作用域,而var声明的范围是函数作用域:

1

2

3

4

5

if (true) {

    let age = 26;

    console.log(age);   //26

}

console.log(age);   //ReferceError:age没有定义

age变量的作用域仅限于该块内部,所以不能在if块外部被引用。块作用域是函数作用域的子集,所以适用于var的作用域限制也同样适用于let。

阅读剩余部分

相关阅读 >>

javascript中回流(重排)与重绘的相关知识介绍(代码示例)

javascript怎么删除行

js中==和===的区别是什么

js怎样直接操作二进制数据

面试常问之javascript变量提升

javascript如何设置滚动条位置

javascript中怎么换行

javascript实现获取远程的html到当前页面中

详解使用 set 来提高js代码性能的方法

javascript中求最大值语句是什么

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...