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 相关文章推荐
让你的博文自动带上缩址的实现代码,方便发到微博客上
Dec 28 Javascript
jquery miniui 教程 表格控件 合并单元格应用
Nov 25 Javascript
javascript:void(0)的问题使用探讨
Apr 10 Javascript
javascript实现禁止复制网页内容汇总
Dec 30 Javascript
JS创建Tag标签的方法详解
Jun 09 Javascript
React-Native中props具体使用详解
Sep 04 Javascript
在Vue项目中使用d3.js的实例代码
May 01 Javascript
解决vue热替换失效的根本原因
Sep 19 Javascript
js module大战
Apr 19 Javascript
Nuxt.js实战和配置详解
Aug 05 Javascript
微信小程序进入广告实现代码实例
Sep 19 Javascript
electron踩坑之dialog中的callback解决
Oct 06 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添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
Javascript模块模式分析
2008/05/16 Javascript
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
JSON 对象未定义错误的解决方法
2016/09/29 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
python发送邮件实例分享
2017/07/28 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
Python Cookie 读取和保存方法
2018/12/28 Python
浅析python中while循环和for循环
2019/11/19 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
应届毕业生如何写求职信
2014/02/16 职场文书
工程管理英文求职信
2014/03/18 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
2014年残联工作总结
2014/11/21 职场文书
社区义诊通知
2015/04/24 职场文书
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python
openstack云计算keystone组件工作介绍
2022/04/20 Servers
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技