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 条评论
登录 后参与评论

相关文章

来自专栏pangguoming

Vue实现对数组、对象的深拷贝、复制

当组件间传递对象时,由于此对象的引用类型指向的都是一个地址(除了基本类型跟null,对象之间的赋值,只是将地址指向同一个,而不是真正意义上的拷贝),如下 数组:...

3916
来自专栏机器学习实践二三事

python中的装饰器

很多时候我们可能会有这样的需求,就是在调试的时候我们会想打印出某些变量出来看看程序对不对,然后在我们调试好了的时候再把这些print语句注释;这样做确实比较麻烦...

19210
来自专栏java一日一条

JavaScript 易错知识点整理

本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由...

461
来自专栏Golang语言社区

Golang语言--中间的derfer

defer Go语言中有种不错的设计,即延迟(defer)语句,你可以在函数中添加多个defer语句。当函数执行到最后时,这些defer语句会按照逆序执行, 最...

3918
来自专栏IMWeb前端团队

Zepto中数据缓存原理与实现

本文作者:IMWeb 谦龙 原文出处:IMWeb社区 未经同意,禁止转载 前言 以前我们使用Zepto进行开发的时候,会把一些自定义的数据存到dom...

16510
来自专栏http://www.cnblogs.com

装饰器

一。关于装饰器: 定义:本质是函数,(装饰其他函数)就是为其他函数添加附加功能 原则:1.不能修改被装饰函数的源代码 2.不能修改被装饰函数的调用方式 二.实现...

2707
来自专栏梦魇小栈

重新认识伪类和伪元素

熟悉前端的人都会听过css的伪类与伪元素,然而大多数的人都会将这两者混淆(包括我)。那今天就让我们来看看伪类和伪元素的区别吧!

812
来自专栏CLEAN_CODER

Learning JavaScript 翻译笔记(二)

来看一个不带显式返回值的函数(默认返回值为undefined)和一个带返回值的函数:

481
来自专栏web前端教室

积累下素材,明天要讲:javascript的变量和作用域

咱们的零基础前端课程,明天就要讲到js的作用域了,今晚先提前写一写,积累下素材。 说到作用域其实就是“非全局变量”能够工作的范围了,你定义这个变量时的区域有多大...

1985
来自专栏全沾开发(huā)

数组的遍历你都会用了,那Promise版本的呢

1954

扫码关注云+社区