浅谈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 07 Javascript
浅谈Javascript的静态属性和原型属性
May 07 Javascript
js实现图片点击左右轮播
Jul 08 Javascript
javascript引用类型之时间Date和数组Array
Aug 27 Javascript
js实现统计字符串中特定字符出现个数的方法
Aug 02 Javascript
underscore之function_动力节点Java学院整理
Jul 11 Javascript
详解Webpack DLL用法以及功能
Jul 11 Javascript
基于滚动条位置判断的简单实例
Dec 14 Javascript
讲解vue-router之什么是嵌套路由
May 28 Javascript
使用Vue.observable()进行状态管理的实例代码详解
May 26 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
Oct 31 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 jQuery
[将免费进行到底]在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 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
jquery iframe操作详细解析
2013/11/20 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
浏览器事件循环与vue nextTicket的实现
2019/04/16 Javascript
VUE 解决mode为history页面为空白的问题
2019/11/01 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
浅谈Python的垃圾回收机制
2016/12/17 Python
Java分治归并排序算法实例详解
2017/12/12 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
2019/10/09 Python
利用Python小工具实现3秒钟将视频转换为音频
2019/10/29 Python
python3 使用traceback定位异常实例
2020/03/09 Python
python实现梯度法 python最速下降法
2020/03/24 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
python 等差数列末项计算方式
2020/05/03 Python
sklearn的predict_proba使用说明
2020/06/28 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
检查接待方案
2014/02/27 职场文书
农村党员一句话承诺
2014/05/30 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
理财计划书
2014/08/14 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
四则混合运算教学反思
2016/02/23 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
Pytest allure 命令行参数的使用
2021/04/18 Python