浅谈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 相关文章推荐
根据一段代码浅谈Javascript闭包
Dec 14 Javascript
jquery.form.js用法之清空form的方法
Mar 07 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
Apr 03 Javascript
jquery插件star-rating.js实现星级评分特效
Apr 15 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
Dec 01 Javascript
JS文件上传神器bootstrap fileinput详解
Jan 28 Javascript
leaflet的开发入门教程
Nov 17 Javascript
jQuery排序插件tableSorter使用方法
Feb 10 Javascript
基于JS脚本语言的基础语法详解
Jul 22 Javascript
js代码规范之Eslint安装与配置详解
Sep 08 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
Sep 23 Javascript
详解vue 组件
Jun 11 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 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
javascript 写类方式之二
2009/07/05 Javascript
jQuery 解析xml文件
2009/08/09 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
2016/01/10 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
vue项目中锚点定位替代方式
2019/11/13 Javascript
[54:29]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第二场
2018/04/09 DOTA
Python 爬虫的工具列表大全
2016/01/31 Python
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
Python自然语言处理之词干,词形与最大匹配算法代码详解
2017/11/16 Python
python Flask实现restful api service
2017/12/04 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
Python超越函数积分运算以及绘图实现代码
2019/11/20 Python
Python基于Webhook实现github自动化部署
2020/11/28 Python
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
印度尼西亚值得信赖的第一家网店:Bhinneka
2018/07/16 全球购物
寒假实习自荐信
2014/01/26 职场文书
技术总监管理职责范本
2014/03/06 职场文书
元旦获奖感言
2014/03/08 职场文书
2014年服务员工作总结
2014/11/18 职场文书
商务代表岗位职责
2015/02/15 职场文书
家属联谊会致辞
2015/07/31 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
MySQL学习之基础操作总结
2022/03/19 MySQL
Java实现简单小画板
2022/06/10 Java/Android