浅谈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 三种方法实现获得和设置以及移除元素属性
Mar 20 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
Jun 24 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
Nov 29 Javascript
JavaScript知识点整理
Dec 09 Javascript
干货分享:让你分分钟学会javascript闭包
Dec 25 Javascript
JavaScript 经典实例日常收集整理(常用经典)
Mar 30 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
Jul 14 Javascript
vue小白入门教程
Apr 02 Javascript
vue+webpack中配置ESLint
Nov 07 Javascript
vue 页面回退mounted函数不执行的解决方案
Jul 26 Javascript
js实现简单抽奖功能
Nov 24 Javascript
vue修改Element的el-table样式的4种方法
Sep 17 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生成压缩文件实例
2015/02/07 PHP
PHP连接access数据库
2015/03/27 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
jQuery中Dom的基本操作小结
2014/01/23 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
node.js cookie-parser之parser.js
2016/06/06 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
layui下拉列表select实现可输入查找的方法
2019/09/28 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
详细介绍Python的鸭子类型
2016/09/12 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
python+requests实现接口测试的完整步骤
2020/10/27 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
墨西哥网上超市:Superama
2018/07/10 全球购物
Internal修饰符有什么含义
2013/07/10 面试题
国外的一些J2EE面试题一
2012/10/13 面试题
测绘工程本科生求职信
2013/10/10 职场文书
业务助理岗位职责
2013/11/18 职场文书
毕业生就业协议书
2014/04/11 职场文书
副总经理岗位职责范本
2014/09/30 职场文书
导游词之上饶龟峰
2019/10/25 职场文书
frg-100简单操作(设置)说明
2022/04/05 无线电