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 相关文章推荐
检测是否已安装 .NET Framework 3.5的js脚本
Feb 14 Javascript
js post方式传递提交的实现代码
May 31 Javascript
JS对象转换为Jquery对象示例
Jan 26 Javascript
jQuery 动态云标签插件
Nov 11 Javascript
jQuery结合HTML5制作的爱心树表白动画
Feb 01 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
Jul 21 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
Nov 09 Javascript
angular写一个列表的选择全选交互组件的示例
Jan 22 Javascript
手动用webpack搭建第一个ReactApp的示例
Apr 11 Javascript
jquery判断滚动条距离顶部的距离方法
Sep 05 jQuery
浅析Angular 实现一个repeat指令的方法
Jul 21 Javascript
vue中路由跳转不计入history的操作
Sep 21 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
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
php操作mysql数据库的基本类代码
2014/02/25 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
My Desktop :) 桌面式代码
2008/12/29 Javascript
Javascript模块化编程(一)模块的写法最佳实践
2013/01/17 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
2013/05/28 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
2018/12/05 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
python写的ARP攻击代码实例
2014/06/04 Python
Python中生成Epoch的方法
2017/04/26 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
FragranceNet中文网:北美健康美容线上零售商
2020/08/26 全球购物
研究生自我鉴定范文
2013/10/30 职场文书
消防安全汇报材料
2014/02/08 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
家长对学生的评语
2014/04/18 职场文书
高一学生评语大全
2014/04/25 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
房产电话营销开场白
2015/05/29 职场文书
决心书格式及范文
2019/06/24 职场文书
javascript实现计算器功能详解流程
2021/11/01 Javascript