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的remove()方法使用详解
Aug 11 Javascript
jsp 网站引入外部css或者js失效问题解决
Oct 31 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
Nov 18 Javascript
js实现淡入淡出轮播切换功能
Jan 13 Javascript
vuejs响应用户事件(如点击事件)
Mar 14 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
Sep 14 Javascript
基于原生js运动方式关键点的总结(推荐)
Oct 01 Javascript
Vue实现表格中对数据进行转换、处理的方法
Sep 06 Javascript
从0到1构建vueSSR项目之路由的构建
Mar 07 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
Apr 09 Javascript
微信小程序仿抖音短视频切换效果的实例代码
Jun 24 Javascript
详解ES6中class的实现原理
Oct 03 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+javascript模拟Matrix画面
2006/10/09 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
2010/12/12 PHP
php图像处理类实例
2015/07/28 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
2019/08/12 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
jquery的$().each和$.each的区别
2019/01/18 jQuery
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
基于js实现判断浏览器类型代码实例
2020/07/17 Javascript
python实现遍历文件夹修改文件后缀
2018/08/28 Python
Django之模型层多表操作的实现
2019/01/08 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
Python用K-means聚类算法进行客户分群的实现
2020/08/23 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
升旗仪式演讲稿
2014/05/08 职场文书
小学校本培训方案
2014/06/06 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
英文感谢信范文
2015/01/21 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL