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 相关文章推荐
Flash+XML滚动新闻代码 无图片 附源码下载
Nov 22 Javascript
jquery弹出框的用法示例(一)
Aug 26 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
Nov 25 Javascript
js跑步算法的实现代码
Dec 04 Javascript
JavaScript中跨域调用Flash的方法
Aug 11 Javascript
每天一篇javascript学习小结(RegExp对象)
Nov 17 Javascript
AngularJS实现动态编译添加到dom中的方法
Nov 04 Javascript
JavaScript严格模式详解
Jan 16 Javascript
node.js中grunt和gulp的区别详解
Jul 17 Javascript
微信小程序如何获取用户信息
Jan 26 Javascript
JS删除数组里的某个元素方法
Feb 03 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
Mar 06 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 memcache扩展的三种安装方法
2009/04/26 PHP
PHP日期处理函数 整型日期格式
2011/01/12 PHP
php中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
JS随机排序数组实现方法分析
2017/10/11 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
vuejs实现下拉框菜单选择
2020/10/23 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
Python字符串和文件操作常用函数分析
2015/04/08 Python
Django添加sitemap的方法示例
2018/08/06 Python
python按照多个条件排序的方法
2019/02/08 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
2020/06/02 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
建筑专业自荐信
2013/10/18 职场文书
基督教婚礼主持词
2014/03/14 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
入党积极分子考察意见
2015/06/02 职场文书
大学新生入学感想
2015/08/07 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL