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 相关文章推荐
重写document.write实现无阻塞加载js广告(补充)
Dec 12 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
Nov 30 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
Feb 18 Javascript
JavaScript实现网页头部进度条刷新
Apr 16 Javascript
BootStrap数据表格实例代码
Sep 13 Javascript
Django与Vue语法的冲突问题完美解决方法
Dec 14 Javascript
判断iOS、Android以及PC端的示例代码
Nov 15 Javascript
前端js中的事件循环eventloop机制详解
May 15 Javascript
JavaScript在web自动化测试中的作用示例详解
Aug 25 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
Sep 03 Javascript
vue2路由基本用法实例分析
Mar 06 Javascript
js实现有趣的倒计时效果
Jan 19 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
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
jQuery示例收集
2010/11/05 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
详解ES6中的let命令
2020/04/05 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
vue中动态select的使用方法示例
2019/10/28 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
Python的Django框架中if标签的相关使用
2015/07/15 Python
python 内置函数filter
2017/06/01 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
黑猩猩商店:The Chimp Store
2020/02/12 全球购物
银行实习人员自我鉴定
2013/09/22 职场文书
生物化工工艺专业应届生求职信
2013/10/08 职场文书
千元咖啡店的创业计划书范文
2013/12/29 职场文书
《桥》教学反思
2014/04/09 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
2014年教务处工作总结
2014/12/03 职场文书
网络营销计划
2015/01/17 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书