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...

50080
来自专栏数据科学与人工智能

【Python环境】Python面试题汇总(二)

【 题目:031】 | 介绍一下except的用法和作用 try/except: 捕捉由PYTHON自身或写程序过程中引发的异常并恢复 e...

28350
来自专栏对角另一面

读 Zepto 源码之集合元素查找

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

23500
来自专栏C语言及其他语言

【编程经验】宏定义

预处理命令可以改变程序设计环境,提高编程效率,它们并不是 C 语言本身的组成部分,不能直接对它们进行编译,必须在对程序进行编译之前,先对程序中这些特殊的命令进行...

34260
来自专栏xiaoxi666的专栏

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

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

14610
来自专栏python百例

117-可变与不可变对象的效率

python是一种解释型的语言,执行效率要比C这样的编译型语言差得多,但是也应该注意它的效率。 python的各种数据类型,按更新模型可以分为可变类型(如列表...

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

13-TypeScript单例模式

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

33950
来自专栏程序员互动联盟

【答疑释惑】c/c++有办法加快程序进入main()前的速度吗

一、答案是Yes。 因为在执行main函数之前,程序会进行很多工作,包括调用系统API,初始化环境。 你能触及到的就是全局变量和静态变量,这些初始化工作也都在m...

32150
来自专栏deepcc

javascript 数据类型

29680
来自专栏菜鸟致敬

【lua菜鸟③】变量和循环

{lua的特点:①不需要分号结尾,但是支持分号啊,如果一行写多个语句就用它啊②没有花括号③函数也不需要声明类型,却和c++的语法极其类似}

13220

扫码关注云+社区

领取腾讯云代金券