浅谈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搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
Jul 10 Javascript
Three.js源码阅读笔记(Object3D类)
Dec 27 Javascript
JavaScript操纵窗口的方法小结
Jun 28 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
Jan 22 Javascript
前端轻量级MVC框架CanJS详解
Sep 26 Javascript
使用jQuery处理AJAX请求的基础学习教程
May 10 Javascript
JS加载器如何动态加载外部js文件
May 26 Javascript
javascript入门之window对象【新手必看】
Nov 22 Javascript
通过命令行创建vue项目的方法
Jul 20 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
Sep 03 Javascript
深入理解Vue keep-alive及实践总结
Aug 21 Javascript
layui table单元格事件修改值的方法
Sep 24 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
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
php获取开始与结束日期之间所有日期的方法
2016/11/29 PHP
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
javascript笔记 String类replace函数的一些事
2011/09/22 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
JS定时器实例
2013/04/17 Javascript
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
详谈javascript中DOM的基本属性
2015/02/26 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
jsTree使用记录实例
2016/12/01 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
Python自动调用IE打开某个网站的方法
2015/06/03 Python
Python中subprocess的简单使用示例
2015/07/28 Python
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
简述 Python 的类和对象
2020/08/21 Python
墨西哥网上超市:Superama
2018/07/10 全球购物
2014年迎新年活动方案
2014/02/19 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
广告设计专业毕业生自我鉴定
2014/09/27 职场文书
2014年领导班子工作总结
2014/12/11 职场文书
毕业酒会致辞
2015/07/29 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
MySQL利用UNION连接2个查询排序失效详解
2021/11/20 MySQL
Python PIL按比例裁剪图片
2022/05/11 Python