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 相关文章推荐
js实现的日期操作类DateTime函数代码
Mar 16 Javascript
js 字符串转化成数字的代码
Jun 29 Javascript
JS清除选择内容的方法
Jan 29 Javascript
javascript中闭包(Closure)详解
Jan 06 Javascript
Angularjs处理页面闪烁的解决方法
Mar 09 Javascript
JavaScript基础之流程控制语句的用法
Aug 31 Javascript
Vue中render方法的使用详解
Jan 26 Javascript
详解javascript中的Error对象
Apr 25 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
Sep 07 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
Nov 01 Javascript
vue 组件销毁并重置的实现
Jan 13 Javascript
JS实现简单的表格增删
Jan 16 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
法压式咖啡之制作法
2021/03/03 冲泡冲煮
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
详解Webpack DLL用法以及功能
2017/07/11 Javascript
Angular4编程之表单响应功能示例
2017/12/13 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
下载给定网页上图片的方法
2014/02/18 Python
python实现保存网页到本地示例
2014/03/16 Python
python中的多线程实例教程
2014/08/27 Python
python中实现定制类的特殊方法总结
2014/09/28 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
Python用threading实现多线程详解
2017/02/03 Python
Python中extend和append的区别讲解
2019/01/24 Python
python logging日志模块原理及操作解析
2019/10/12 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
Python库安装速度过慢解决方案
2020/07/14 Python
python 如何引入协程和原理分析
2020/11/30 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
机电一体化专业应届本科生求职信
2013/09/27 职场文书
业务主管岗位职责
2013/11/20 职场文书
社区党建工作总结2015
2015/05/13 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书
MySQL获取所有分类的前N条记录
2021/05/07 MySQL
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
2021/06/26 Python
python运行脚本文件的三种方法实例
2022/06/25 Python