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 相关文章推荐
javaScript parseInt字符转化为数字函数使用小结
Nov 05 Javascript
javascript实现的使用方向键控制光标在table单元格中切换
Nov 17 Javascript
js对table的td进行相同内容合并示例详解
Dec 27 Javascript
原生js结合html5制作小飞龙的简易跳球
Mar 30 Javascript
Node.js中使用socket创建私聊和公聊聊天室
Nov 19 Javascript
jQuery实现的右下角广告窗体跟随效果示例
Sep 16 Javascript
JavaScript自定义分页样式
Jan 17 Javascript
基于Angular.js实现的触摸滑动动画实例代码
Feb 19 Javascript
微信小程序异步处理详解
Nov 10 Javascript
使用vue实现grid-layout功能实例代码
Jan 05 Javascript
当vue路由变化时,改变导航栏的样式方法
Aug 22 Javascript
前端面试知识点目录一览
Apr 15 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 缓冲的免费实现方法
2006/10/09 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
js中匿名函数的N种写法
2010/09/08 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
浅谈如何使用webpack构建多页面应用
2018/05/30 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
vue-router为激活的路由设置样式操作
2020/07/18 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
python图像处理之镜像实现方法
2015/05/30 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
Selenium定位元素操作示例
2018/08/10 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
python爬虫容易学吗
2020/06/02 Python
python绘图模块之利用turtle画图
2021/02/12 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
师范生自荐信范文
2013/10/06 职场文书
毕业研究生的自我鉴定
2013/11/30 职场文书
秘书行业自我鉴定范文
2013/12/30 职场文书
清明节扫墓活动方案
2014/03/02 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
Java spring定时任务详解
2021/10/05 Java/Android