前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javascript -- 变量

javascript -- 变量

作者头像
大当家
发布2018-06-28 19:21:30
6740
发布2018-06-28 19:21:30
举报
文章被收录于专栏:web

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

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

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

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

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

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

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

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

定义:

代码语言:javascript
复制
var message;
var user;

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

代码语言:javascript
复制
console.log(message);// undefined

函数退出后,变量销毁.

代码语言:javascript
复制
function test(){
var msg='hi'; // 局部变量
}
test();
console.log(msg);// 错误

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

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

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

代码语言:javascript
复制
function test(){
console.log(msg);
var msg='hi';
};
test();// undefined
console.log(msg);// msg is not defined
由此可以看出变量 msg 提升到了函数test()的顶部,初始化并没有提升,如下:
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-05-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档