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 相关文章推荐
给网站上的广告“加速”显示的方法
Apr 08 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
Nov 06 Javascript
Jquery方式获取iframe页面中的 Dom元素
May 07 Javascript
Webpack 实现 Node.js 代码热替换
Oct 22 Javascript
详解Bootstrap glyphicons字体图标
Jan 04 Javascript
JavaScript小技巧整理篇(非常全)
Jan 26 Javascript
jQuery.parseHTML() 函数详解
Jan 09 Javascript
分享bootstrap学习笔记心得(组件及其属性)
Jan 11 Javascript
基于jQuery的表单填充实例
Aug 22 jQuery
vue侧边栏动态生成下级菜单的方法
Sep 07 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
Apr 07 Javascript
Node.js API详解之 V8模块用法实例分析
Jun 05 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安全编程之加密功能
2006/10/09 PHP
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
JavaScript中的比较操作符>、=、
2014/12/31 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
使用vue.js制作分页组件
2016/06/27 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
python实现备份目录的方法
2015/08/03 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
python爬虫获取多页天涯帖子
2018/02/23 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
2020/11/30 Python
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
北京银河万佳Java面试题
2012/03/21 面试题
什么是lambda函数
2013/09/17 面试题
违纪开除通知书
2015/04/25 职场文书
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫