浅谈JavaScript中定义变量时有无var声明的区别


Posted in Javascript onAugust 18, 2014

前段时间回答了一个关于定义变量时使用关键字var与否的区别,总结回顾一下。

1.在函数作用域内 加var定义的变量是局部变量,不加var定义的就成了全局变量。
使用var定义:

var a = 'hello World';
function bb(){
 var a = 'hello Bill';
 console.log(a);  
}
bb()      //'hello Bill'
console.log(a);  //'hello world'

不使用var定义:

var a = 'hello World';
function bb(){
 a = 'hello Bill';
 console.log(a);  
}
bb()      //'hello Bill'
console.log(a);  //'hello Bill'

2.在全局作用域下,使用var定义的变量不可以delete,没有var 定义的变量可以delete.也就说明隐含全局变量严格来说不是真正的变量,而是全局对象的属性,因为属性可以通过delete删除,而变量不可以。

3.使用var 定义变量还会提升变量声明,即
使用var定义:

function hh(){
 console.log(a);
 var a = 'hello world';
}
hh()      //undefined

不使用var定义:

function hh(){
 console.log(a);
 a = 'hello world';
}
hh()      //'a is not defined'

这就是使用var定义的变量的声明提前。

4.在ES5的'use strict'模式下,如果变量没有使用var定义,就会报错。

Javascript 相关文章推荐
List all the Databases on a SQL Server
Jun 21 Javascript
IE8 中使用加速器(Activities)
May 14 Javascript
对table和ul实现js分页示例分享
Feb 24 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
Apr 15 Javascript
javascript的日期对象、数组对象、二维数组使用说明
Dec 22 Javascript
深入分析Javascript跨域问题
Apr 17 Javascript
JS解析XML文件和XML字符串详解
Apr 17 Javascript
js 定义对象数组(结合)多维数组方法
Jul 27 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
Jan 05 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
Apr 28 Javascript
jQuery实现鼠标拖拽登录框移动效果
Sep 13 jQuery
mapboxgl实现带箭头轨迹线的代码
Jan 04 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
Aug 18 #Javascript
使用node.js半年来总结的 10 条经验
Aug 18 #Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
Aug 18 #Javascript
根据当前时间在jsp页面上显示上午或下午
Aug 18 #Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
Aug 18 #Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
Aug 18 #Javascript
jquery中$(#form :input)与$(#form input)的区别
Aug 18 #Javascript
You might like
PHP函数strip_tags的一个bug浅析
2014/05/22 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
PHP写API输出的时用echo的原因详解
2019/04/28 PHP
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
jquery如何通过name名称获取当前name的value值
2013/12/20 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
2016/07/12 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
Node.js assert断言原理与用法分析
2019/01/04 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
使用Python生成XML的方法实例
2017/03/21 Python
用Django写天气预报查询网站
2018/10/21 Python
从DataFrame中提取出Series或DataFrame对象的方法
2018/11/10 Python
详解python中eval函数的作用
2019/10/22 Python
Pyqt5自适应布局实例
2019/12/13 Python
Python小白不正确的使用类变量实例
2020/05/29 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
学校大课间活动方案
2014/01/30 职场文书
志愿者事迹材料
2014/12/26 职场文书
党建工作目标管理责任书
2015/01/29 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书