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 相关文章推荐
javascript 文件的同步加载与异步加载实现原理
Dec 13 Javascript
js实现页面转发功能示例代码
Aug 05 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
Dec 04 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
Mar 10 Javascript
jQuery四种选择器使用及示例
Jun 05 Javascript
vue.js将unix时间戳转换为自定义时间格式
Jan 03 Javascript
vue2项目使用sass的示例代码
Jun 28 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
Nov 22 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
Feb 03 Javascript
JS中注入eval, Function等系统函数截获动态代码
Apr 03 Javascript
JS实现简单省市二级联动
Nov 27 Javascript
jQuery实现动态操作table行
Nov 23 jQuery
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 防止单引号,双引号在接受页面转义
2008/07/10 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
PHP SOCKET编程详解
2015/05/22 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
php中用unset销毁变量并释放内存
2020/05/10 PHP
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
浅析JS刷新框架中的其他页面 && JS刷新窗口方法汇总
2013/07/08 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
python正则实现提取电话功能
2018/02/24 Python
python购物车程序简单代码
2018/04/18 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
python应用文件读取与登录注册功能
2019/09/23 Python
python3常用的数据清洗方法(小结)
2019/10/31 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
html5实现完美兼容各大浏览器的播放器
2014/12/26 HTML / CSS
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
餐饮部总监岗位职责范文
2014/02/13 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
医学求职自荐信
2014/06/21 职场文书
分享15个Webpack实用的插件!!!
2021/03/31 Javascript