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 相关文章推荐
js简单实现HTML标签Select联动带跳转
Oct 23 Javascript
JS实现控制表格单元格垂直对齐的方法
Mar 30 Javascript
js实现点击获取验证码倒计时效果
Jan 28 Javascript
深入理解JavaScript中的对象复制(Object Clone)
May 18 Javascript
javascript设计模式Constructor(构造器)模式
Aug 19 Javascript
纯原生js实现table表格的增删
Jan 05 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
Nov 20 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
Nov 28 Javascript
Node.js中sequelize时区的配置方法
Dec 10 Javascript
解决vue 按钮多次点击重复提交数据问题
May 10 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
May 21 Javascript
vue 如何从单页应用改造成多页应用
Oct 23 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
linux下 C语言对 php 扩展
2008/12/14 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
浅谈php serialize()与unserialize()的用法
2013/06/05 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
jquery JSON的解析方式
2009/07/25 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
基于jQuery的360图片展示实现代码
2012/06/14 Javascript
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
JS实现页面打印(整体、局部)
2017/08/18 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
简单使用Python自动生成文章
2014/12/25 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
python 构造三维全零数组的方法
2018/11/12 Python
python命令行参数用法实例分析
2019/06/25 Python
Python列表与元组的异同详解
2019/07/02 Python
python程序 创建多线程过程详解
2019/09/23 Python
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
优秀生推荐信范文
2013/11/28 职场文书
同居协议书范本
2014/04/23 职场文书
环保建议书200字
2014/05/14 职场文书
装配出错检讨书
2014/09/23 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
建国大业观后感
2015/06/01 职场文书