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实现的鼠标滑过按钮改变背景图片
Jul 15 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
jquery实现华丽的可折角广告代码
Sep 02 Javascript
jQuery实现监控页面所有ajax请求的方法
Dec 10 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
Mar 24 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
Dec 26 Javascript
全面解析Node.js 8 重要功能和修复
Jun 02 Javascript
Vue入门之animate过渡动画效果
Apr 08 Javascript
WebSocket的通信过程与实现方法详解
Apr 29 Javascript
深入理解JavaScript 中的执行上下文和执行栈
Oct 23 Javascript
JS async 函数的含义和用法实例总结
Apr 08 Javascript
使用react+redux实现计数器功能及遇到问题
Jun 02 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/03/04 星际争霸
优化PHP程序的方法小结
2012/02/23 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
js实现数组转换成json
2015/06/26 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
JavaScript 对象字面量讲解
2016/06/06 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
Python中的多行注释文档编写风格汇总
2016/06/16 Python
python 类详解及简单实例
2017/03/24 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
小区文明倡议书
2014/05/16 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
诉讼代理人授权委托书
2014/10/11 职场文书
2014财务年度工作总结
2014/11/11 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
js之ajax文件上传
2021/05/13 Javascript
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python