浅谈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.boxy对话框插件代码
Oct 26 Javascript
解决jquery操作checkbox火狐下第二次无法勾选问题
Feb 10 Javascript
JavaScript学习笔记之JS对象
Jan 22 Javascript
JavaScript计划任务后台运行的方法
Dec 18 Javascript
JS控制FileUpload的上传文件类型实例代码
Oct 07 Javascript
Bootstrap Table使用方法解析
Oct 19 Javascript
微信小程序-滚动消息通知的实例代码
Aug 03 Javascript
简单谈谈JS中的正则表达式
Sep 11 Javascript
Javascript防止图片拉伸的自适应处理方法
Dec 26 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
Aug 05 Javascript
vue-autoui自匹配webapi的UI控件的实现
Mar 20 Javascript
vue.js click点击事件获取当前元素对象的操作
Aug 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
西德产收音机
2021/03/01 无线电
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
PHP文件读写操作之文件读取方法详解
2011/01/13 PHP
php搜索文件程序分享
2015/10/30 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
JavaScript Chart 插件整理
2010/06/18 Javascript
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
使用bootstrap3开发响应式网站
2016/05/12 Javascript
Highcharts入门之简介
2016/08/02 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
浅谈layui 数据表格前后台传值的问题
2019/09/12 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
初步剖析C语言编程中的结构体
2016/01/16 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
python带参数打包exe及调用方式
2019/12/21 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
用CSS3将你的设计带入下个高度
2009/08/08 HTML / CSS
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
公司企业表扬信
2014/01/11 职场文书
大学生毕业鉴定
2014/01/31 职场文书
公证委托书格式
2014/09/13 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
研讨会致辞
2015/07/31 职场文书
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android