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 相关文章推荐
jQueryUI的Dialog的简单封装
Jun 07 Javascript
js解析与序列化json数据(三)json的解析探讨
Feb 01 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
May 11 Javascript
javascript中活灵活现的Array对象详解
Nov 30 Javascript
js处理层级数据结构的方法小结
Jan 17 Javascript
AngularJS实现使用路由切换视图的方法
Jan 24 Javascript
Vue动态实现评分效果
May 24 Javascript
详解javascript对数组和json数组的操作
Apr 15 Javascript
Node对CommonJS的模块规范
Nov 06 Javascript
Js代码中的span拼接问题解决
Nov 22 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
Apr 10 Javascript
Vue 3自定义指令开发的相关总结
Jan 29 Vue.js
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
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
php常用日期时间函数实例小结
2019/07/04 PHP
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
简单了解小程序+node梳理登陆流程
2019/06/24 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
python三引号输出方法
2019/02/27 Python
python 项目目录结构设置
2020/02/14 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
keras.layer.input()用法说明
2020/06/16 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
倩碧英国官网:Clinique英国
2018/08/10 全球购物
大学生职业生涯设计书
2014/01/02 职场文书
农村婚礼证婚词
2014/01/08 职场文书
文化宣传方案
2014/03/13 职场文书
内勤主管岗位职责
2014/04/03 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
2014年健康教育工作总结
2014/11/20 职场文书
写给医生的感谢信
2015/01/22 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
就业意向协议书
2015/01/29 职场文书
卫生保健工作总结2015
2015/05/18 职场文书
父母教会我观后感
2015/06/17 职场文书