浅谈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中的数学函数集合
May 08 Javascript
jQuery 树形结构的选择器
Feb 15 Javascript
纯js实现无限空间大小的本地存储
Jun 18 Javascript
JavaScript统计网站访问次数的实现代码
Nov 18 Javascript
js中获取jsp表单中radio类型的值简单实例
Aug 15 Javascript
微信小程序 新建登录页并实现tabBar隐藏
Jun 13 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
Sep 11 jQuery
详解Vue.js项目API、Router配置拆分实践
Mar 16 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
Jun 22 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
Aug 28 Javascript
浅谈webpack4.x 入门(一篇足矣)
Sep 05 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 28 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 高手之路(三)
2006/10/09 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
laravel 框架配置404等异常页面
2019/01/07 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
基于jquery的手风琴图片展示效果实现方法
2014/12/16 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
前端Electron新手入门教程详解
2019/06/21 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
快速了解Python中的装饰器
2018/01/11 Python
深入理解Python异常处理的哲学
2019/02/01 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
Python函数参数类型及排序原理总结
2019/12/19 Python
详解Python 中的容器 collections
2020/08/17 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
如何进行有效的自我评价
2013/09/27 职场文书
文明和谐家庭事迹材料
2014/05/18 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
财务管理制度范本
2015/08/04 职场文书
环保建议书范文
2015/09/14 职场文书
2019年思想汇报
2019/06/20 职场文书
话题作文之呼唤
2019/12/18 职场文书
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers