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

 更新时间:2019年01月21日 11:34:54   作者:muzidigbig  
今天小编就为大家分享一篇关于js变量声明var使用与不使用的区别详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

一、区分显示的声明与隐式声明(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',前者是变量声明,带不可删除属性,因此无法被删除;后者为全局变量的一个属性,因此可以从全局变量中删除。

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

总结

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

相关文章

  • 使用百度地图实现地图网格的示例

    使用百度地图实现地图网格的示例

    下面小编就为大家分享一篇使用百度地图实现地图网格的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析

    es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析

    这篇文章主要介绍了es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用,结合实例形式分析了es6 class类静态方法,静态属性,实例属性,实例方法相关概念、原理、用法及相关操作注意事项,需要的朋友可以参考下
    2020-02-02
  • Three.js基础学习之场景对象

    Three.js基础学习之场景对象

    这篇文章主要给大家介绍了Three.js基础学习之场景对象的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用three.js具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧。
    2017-09-09
  • js字符串分割处理的几种方法(6种)

    js字符串分割处理的几种方法(6种)

    本文主要介绍了js字符串分割处理的几种方法,主要介绍了6种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • layui 上传文件_批量导入数据UI的方法

    layui 上传文件_批量导入数据UI的方法

    今天小编就为大家分享一篇layui 上传文件_批量导入数据UI的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 详解如何使用babel进行es6文件的编译

    详解如何使用babel进行es6文件的编译

    这篇文章主要介绍了详解如何使用babel进行es6文件的编译,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • JavaScript页面加载事件实例讲解

    JavaScript页面加载事件实例讲解

    在本篇文章中我们给大家通过实例讲解一下关于JavaScript页面加载事件的相关知识点内容,有需要的朋友们可以参考下。
    2019-09-09
  • js技巧--转义符"\"的妙用

    js技巧--转义符"\"的妙用

    js技巧--转义符"\"的妙用...
    2007-01-01
  • 利用d3.js力导布局绘制资源拓扑图实例教程

    利用d3.js力导布局绘制资源拓扑图实例教程

    这篇文章主要给大家介绍了关于如何利用d3.js力导布局绘制资源拓扑图的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • js中匿名函数的N种写法

    js中匿名函数的N种写法

    在java中有private属性,强大的功能js不能实现就矮人一截,匿名函数,发扬广大
    2010-09-09

最新评论