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 相关文章推荐
jquery 插件实现图片延迟加载效果代码
Feb 06 Javascript
JavaScript中“基本类型”之争小结
Jan 03 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
May 03 Javascript
更快的异步执行(setTimeout多浏览器)
Aug 12 Javascript
javascript异步编程代码书写规范Promise学习笔记
Feb 11 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
Dec 14 Javascript
javascript ES6 新增了let命令使用介绍
Jul 07 Javascript
react学习笔记之state以及setState的使用
Dec 07 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
微信小程序实现下拉框功能
Jul 16 Javascript
微信小程序后端无法保持session的原因及解决办法问题
Mar 20 Javascript
javascript全局自定义鼠标右键菜单
Dec 08 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 error_log 函数的使用
2009/04/13 PHP
php强制下载类型的实现代码
2011/04/21 PHP
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
python动态加载变量示例分享
2014/02/17 Python
Python 文件管理实例详解
2015/11/10 Python
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
python文件路径操作方法总结
2020/12/21 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
简历自荐信
2013/12/02 职场文书
幼儿园家长会欢迎词
2014/01/09 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
2015年社区工作总结
2015/04/08 职场文书
幼儿园辞职信
2015/05/13 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS
Tomcat弱口令复现及利用
2022/05/06 Servers