js变量声明var使用与不使用的区别详解


Posted in Javascript onJanuary 21, 2019

一、区分显示的声明与隐式声明(var)

JS中变量声明分显式声明和隐式声明。

var name = 'muzidigbig';//显示声明 
name = 'muzidigbig';//隐式声明(为全局变量的一个属性)

在函数中使用var关键字进行显式声明的变量是做为局部变量,在全局范围内声明的变量为全局变量;而没有用var关键字,使用直接赋值方式声明的是全局变量(全局对象属性)。

// name = 'muzidigbig';//隐式声明(为全局变量的一个属性)
  console.log(name);
  function person(){
    name = '木子大大';
    console.log(name);
  }
  person();

当我们使用访问一个没有声明的变量时,JS会报错;而当我们给一个没有声明的变量赋值时,JS不会报错,相反它会认为我们是要隐式声明一个全局变量,这一点一定要注意。

name = 'muzidigbig';//隐式声明(为全局变量的一个属性)
console.log(name);
function person(){
  name = '木子大大';
  console.log(name);//木子大大
}
person();

在当前域中声明变量. 如果在方法中声明,则为局部变量(local variable);如果是在全局域中声明,则为全局变量。

而事实上是对属性赋值操作。首先,它会尝试在当前作用域链(如在方法中声明,则当前作用域链代表全局作用域和方法局部作用域)中解析 name; 如果在任何当前作用域链中找到name,则会执行对name属性赋值; 如果没有找到name,它才会在全局对象(即当前作用域链的最顶层对象,如window对象)中创造name属性并赋值。

注意!它并不是声明了一个全局变量,而是创建了一个全局对象的属性。

即便如此,可能你还是很难明白“变量声明”跟“创建对象属性”在这里的区别。事实上,Javascript的变量声明、创建属性以及每个Javascript中的每个属性都有一定的标志说明它们的属性----如只读(ReadOnly)不可枚举(DontEnum)不可删除(DontDelete)等等。

由于变量声明自带不可删除属性,比较var name = 'muzidigbig' 跟 name = 'muzidigbig',前者是变量声明,带不可删除属性,因此无法被删除;后者为全局变量的一个属性,因此可以从全局变量中删除。

若有不足请多多指教!希望给您带来帮助!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Javascript 相关文章推荐
基于jquery异步传输json数据格式实例代码
Nov 23 Javascript
checkbox全选所涉及到的知识点介绍
Dec 31 Javascript
js+div实现文字滚动和图片切换效果代码
Aug 27 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
Sep 09 Javascript
JavaScript生成验证码并实现验证功能
Sep 24 Javascript
JS检测window.open打开的窗口是否关闭
Jun 25 Javascript
Vue触发式全局组件构建的方法
Nov 28 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
Apr 17 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
Apr 28 jQuery
iview的table组件自带的过滤器实现
Jul 12 Javascript
微信小程序使用车牌号输入法的示例代码
Aug 20 Javascript
JS三级联动代码格式实例详解
Dec 30 Javascript
Vue中Axios从远程/后台读取数据
Jan 21 #Javascript
vue项目中实现的微信分享功能示例
Jan 21 #Javascript
在vue项目中引入highcharts图表的方法
Jan 21 #Javascript
js的对象与函数详解
Jan 21 #Javascript
JS实现求5的阶乘示例
Jan 21 #Javascript
JS实现数组去重,显示重复元素及个数的方法示例
Jan 21 #Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
Jan 21 #Javascript
You might like
php xml 入门学习资料
2011/01/01 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
php操作MongoDB类实例
2015/06/17 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
PHP7新增函数
2021/03/09 PHP
JavaScript的eval JSON object问题
2009/11/15 Javascript
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
JavaScript面试题大全(推荐)
2016/09/22 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
Python实现Dijkstra算法
2018/10/17 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
Django REST 异常处理详解
2020/07/15 Python
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
标准毕业生自荐信范文
2013/11/04 职场文书
大专会计自我鉴定
2014/02/06 职场文书
学习十八大的心得体会
2014/09/12 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
销售开票员岗位职责
2015/04/15 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
springboot如何初始化执行sql语句
2021/06/22 Java/Android
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript