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 相关文章推荐
jQuery中:selected选择器用法实例
Jan 04 Javascript
jquery实现焦点图片随机切换效果的方法
Mar 12 Javascript
AngularJS中的Directive自定义一个表格
Jan 25 Javascript
原生js实现ajax方法(超简单)
Sep 20 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
Sep 24 Javascript
微信小程序 Nginx环境配置详细介绍
Feb 14 Javascript
ES6中Proxy代理用法实例浅析
Apr 06 Javascript
bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
Aug 10 Javascript
jQuery基于cookie实现换肤功能实例
Oct 14 jQuery
vue组件的写法汇总
Apr 12 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
Jul 23 Javascript
js实现简单掷骰子小游戏
Oct 24 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
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
AngularJS入门心得之directive和controller通信过程
2016/01/25 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
Python实现PS图像明亮度调整效果示例
2018/01/23 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
学校岗位设置方案
2014/01/16 职场文书
投标邀请书范文
2014/01/31 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
2015年预算员工作总结
2015/05/14 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python