javascript变量声明实例分析


Posted in Javascript onApril 25, 2015

本文实例讲述了javascript变量声明的方法。分享给大家供大家参考。具体分析如下:

js中使用一个变量之前应当先声明。变量使用关键字var来声明。

如果未在var声明语句中给变量指定初始值,则该变量值为undefined。
不用在声明变量时指定变量类型,js变量可以是任意数据类型。

使用var语句重复声明变量是合法且无害的。如果重复声明带有初始化器,则就和简单的赋值语句没啥区别。

如果试图读取一个没有声明的变量,则js会报错。在ECMAScript5严格模式下,给一个没有声明的变量赋值也会报错;然而从历史上来说,在非严格模式下,如果给一个未声明变量赋值,js实际上会给全局对象创建一个同名属性,且貌似它工作起来像一个正确声明的全局变量。这意味着你可以侥幸不声明全局变量,但这是一个坏习惯会造成很多bug,最好始终使用var来声明变量。

在函数体内,同名的局部变量会覆盖全局变量。
尽管全局作用域写代码可以不写var语句,但声明局部变量时必须使用var语句,参考如下代码:

scope = "global";
function foo(){
  scope="local"
  //fk!我们刚刚修改了全局变量!!!
}

在类似C语言的编程语言中,花括号中每一段代码都有各自的作用域,且变量在声明它们代码段之外是不可见的,我们称之为块级作用域(block scope);而js中没有块级作用域,而是取而代之的使用了函数作用域(function scope):变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的(无论是内嵌套还是外嵌套?)
js的函数作用域指在函数内声明的所有变量在函数体内始终是可见的,这意味着变量在声明前甚至可以使用了。js的这个特性非正式的称为声明提前(hoisting),即js函数里声明的所有变量(但没有赋值)都被“提前”至函数体的顶部。

var scope = "global";
function f(){
  console.log(scope);
  //输出"undefined"而不是"global"
  var scope = "local";
  //变量在这里赋初始值,但变量在函数体内任何地方均是有定义的
  console.log(scope);
  //输出"local"

以上代码等价于:

function f(){
  var scope;
  console.log(scope);
  scope = "local";
  console.log(scope);
  }

当声明一个js全局变量时,实际上定义了全局对象的一个属性。
当用var声明一个变量时,创建的这个属性时不可配置的,即无法用delete运算符删除;但当你没有使用严格模式并给一个未声明的变量赋值的话,js会自动创建一个全局变量,以这种方式创建的变量是全局对象的正常可配置属性,是可以删除的:

var x = 1; 
y = 2;
this.z = 3; //同上
delete x; //返回false,无法删除变量
delete y; //返回true,变量被删除
delete this.z //同上

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
双击滚屏-常用推荐
Nov 29 Javascript
ajax无刷新动态调用股票信息(改良版)
Nov 01 Javascript
js监听输入框值的即时变化onpropertychange、oninput
Jul 13 Javascript
JS打开新窗口的2种方式
Apr 18 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
Jan 11 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
May 28 Javascript
AngularJS基础 ng-selected 指令简单示例
Aug 03 Javascript
如何在AngularJs中调用第三方插件库
May 21 Javascript
JavaScript基础之静态方法和实例方法分析
Dec 26 Javascript
如何在微信小程序中使用骨架屏的步骤
Jun 12 Javascript
vue中jsonp插件的使用方法示例
Sep 10 Javascript
Taro小程序自定义顶部导航栏功能的实现
Dec 17 Javascript
javascript显式类型转换实例分析
Apr 25 #Javascript
javascript原始值和对象引用实例分析
Apr 25 #Javascript
JavaScript分页功能的实现方法
Apr 25 #Javascript
JavaScript实现图片DIV竖向滑动的方法
Apr 25 #Javascript
JavaScript实现梯形乘法表的方法
Apr 25 #Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
Apr 25 #Javascript
JavaScript获取DOM元素的11种方法总结
Apr 25 #Javascript
You might like
重置版战役片段
2020/04/09 魔兽争霸
Php Cookie的一个使用注意点
2008/11/08 PHP
PHP STRING 陷阱原理说明
2010/07/24 PHP
php自动获取字符串编码函数mb_detect_encoding
2011/05/31 PHP
php 获取本地IP代码
2013/06/23 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
ASP SQL防注入的方法
2008/12/25 Javascript
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
微信小程序导航栏跟随滑动效果的实现代码
2019/05/14 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
总结Python编程中三条常用的技巧
2015/05/11 Python
Python实现监控程序执行时间并将其写入日志的方法
2015/06/30 Python
详解Python爬虫的基本写法
2016/01/08 Python
windows系统下Python环境的搭建(Aptana Studio)
2017/03/06 Python
python调用百度语音识别api
2018/08/30 Python
使用Python和Scribus创建一个RGB立方体的方法
2019/07/17 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
五型班组建设方案
2014/02/10 职场文书
愚人节活动策划方案
2014/03/11 职场文书
扩大国家免疫规划实施方案
2014/03/21 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
村干部任职承诺书
2015/01/21 职场文书
经理助理岗位职责
2015/02/02 职场文书
指导老师鉴定意见
2015/06/05 职场文书
行政处罚告知书
2015/07/01 职场文书