浅谈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 相关文章推荐
初探jquery——表单应用范例
Feb 20 Javascript
dwr spring的集成实现代码
Mar 22 Javascript
json格式化/压缩工具 Chrome插件扩展版
May 25 Javascript
jQuery 对Select的操作备忘记录
Jul 04 Javascript
jQuery ztree实现动态树形多选菜单
Aug 12 Javascript
关于Vue.nextTick()的正确使用方法浅析
Aug 25 Javascript
AngularJS实现的输入框字数限制提醒功能示例
Oct 26 Javascript
JavaScript面试出现频繁的一些易错点整理
Mar 29 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
Jul 10 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
Feb 26 Javascript
JS数组方法reduce的用法实例分析
Mar 03 Javascript
JavaScript实现世界各地时间显示
Sep 07 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下通过file_get_contents的代理使用方法
2011/02/16 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
2019/10/15 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
JavaScript 继承详解(一)
2009/07/13 Javascript
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
神经网络理论基础及Python实现详解
2017/12/15 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
详解python算法之冒泡排序
2019/03/05 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
python如何将多个PDF进行合并
2019/08/13 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
给老师的道歉信
2014/01/11 职场文书
普通员工辞职信
2014/01/17 职场文书
企业员工培训感言
2014/02/26 职场文书
2014年会计个人工作总结
2014/11/24 职场文书
幼儿园教师辞职信
2019/06/21 职场文书
Nginx快速入门教程
2021/03/31 Servers