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 URL传中文参数引发的乱码问题
Sep 02 Javascript
js最简单的拖拽效果实现代码
Sep 24 Javascript
Jquery数独游戏解析(一)-页面布局
Nov 05 Javascript
js判断浏览器版本以及浏览器内核的方法
Jan 20 Javascript
Angularjs中UI Router全攻略
Jan 29 Javascript
避免jQuery名字冲突 noConflict()方法
Jul 30 Javascript
JS Select下拉框(支持输入模糊查询)
Feb 04 Javascript
JS正则获取HTML元素的方法
Mar 31 Javascript
Node.js + express基本用法教程
Mar 14 Javascript
vue循环中点击选中再点击取消(单选)的实现
Sep 10 Javascript
vue-router 控制路由权限的实现
Sep 24 Javascript
vue实现点击出现操作弹出框的示例
Nov 05 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实现改变图片直接打开为下载的方法
2015/04/14 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
JTrackBar水平拖动效果
2007/07/15 Javascript
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
2012/02/23 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
web网页按比例显示图片实现原理及js代码
2013/08/09 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
JS实现点餐自动选择框(案例分析)
2019/12/10 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
vue监听dom大小改变案例
2020/07/29 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
python缩进区别分析
2014/02/15 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
Python实现的knn算法示例
2018/06/14 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
大专毕业生自我评价分享
2013/11/10 职场文书
幼儿园母亲节活动方案
2014/03/10 职场文书
合作协议书
2014/04/23 职场文书
政风行风评议整改方案
2014/09/15 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
检讨书范文500字
2015/01/28 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js