javascript -- 变量

工作中发觉原生 js 还有待加强,只好再啃一遍高程3了。

ECMAScript的变量是松散类型的,所谓松散类型就是(变量)可以用来保存任意类型的数据。换句话说每个变量仅仅是在特定的时间内保存值的占位符而已。

所谓特定的时间就是变量的生命周期。

关于生命周期就要说到‘作用域’,进而得说‘作用域链’。此处只做简单介绍,后面会详细介绍作用域和作用域链。

js中没有块状作用域( if语句 ),只有全局作用域和函数作用域。

(var定义的变量将称为该作用域中的局部变量 即全局下就是全局变量,函数内就是局部变量)

全局作用域:在全局下有效(全局定义或函数内未定义只赋值的变量),即window下都可以使用。

函数作用域:只在函数体内有效,函数运行完函数、变量立即销毁,这也是无法在外面引用函数内的变量的原因。

定义:

var message;
var user;

定义了名为message user的变量,可以用来保存任何值。未初始化的会保存一个undefined

console.log(message);// undefined

函数退出后,变量销毁.

function test(){
var msg='hi'; // 局部变量
}
test();
console.log(msg);// 错误

函数体内未定义只赋值的变量是全局变量:

function test(){
 msg='hi';// 全局变量 不太推荐 因为在局部定义全局变量 难以维护
}
test();
console.log(msg);// 'hi'

变量提升(只是声明提升,赋值(初始化)没有提升):

function test(){
console.log(msg);
var msg='hi';
};
test();// undefined
console.log(msg);// msg is not defined
由此可以看出变量 msg 提升到了函数test()的顶部,初始化并没有提升,如下:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏搞前端的李蚊子

JS——判断一个对象是否为空

判断一个对象是否为空对象,本文给出三种判断方法: 1.最常见的思路,for...in...遍历属性,为真则为“非空数组”;否则为“空数组” ?  2.通过JSO...

3628
来自专栏重庆的技术分享区

关于eslint使用规则,和各种报错对应规则。

ESLint 由 JavaScript 红宝书 作者 Nicholas C. Zakas 编写, 2013 年发布第一个版本。 NCZ 的初衷不是重复造一个轮子...

8217
来自专栏deepcc

javascript 数据类型

2768
来自专栏LEo的网络日志

python技巧分享(十)

41313
来自专栏magicsoar

C语言和go语言之间的交互 - C语言中使用go语言,使用的go语言又使用了c语言

一、go语言中使用C语言 go代码中使用C代码,在go语言的函数块中,以注释的方式写入C代码,然后紧跟import “C” 即可在go代码中使用C函数 ? 代码...

29310
来自专栏重庆的技术分享区

关于eslint使用规则,和各种报错对应规则

3185
来自专栏对角另一面

读 Zepto 源码之集合元素查找

这篇依然是跟 dom 相关的方法,侧重点是跟集合元素查找相关的方法。 读Zepto源码系列文章已经放到了github上,欢迎star: reading-zept...

2090
来自专栏领域驱动设计DDD实战进阶

13-TypeScript单例模式

在JavaScript中,要实现设计模式比较复杂。而在TypeScript中因为使用面向对象的思想编程,要实现设计模式的方式与后端语言C#、Java等非常类似。...

2795
来自专栏xiaoxi666的专栏

C++数据个数未知情况下的输入方法

我们经常需要输入一串数,而数据个数未知。这时候就不能以数据个数作为输入是否结束的判断标准了。

581
来自专栏Nian糕的私人厨房

Type Script 的基本概念及常用语法

TypeScript 是一种由微软开发的自由和开源的编程语言,它作为 JavaScript 的一个超集,扩展了JavaScript 的语法,而且本质上向这个语言...

1033

扫码关注云+社区