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让setInteval里的函数参数中的this指向特定的对象
Jan 31 Javascript
为EasyUI的Tab标签添加右键菜单的方法
Jul 14 Javascript
JS中的prototype与面向对象的实例讲解
May 22 Javascript
JS定时刷新页面及跳转页面的方法
Jul 04 Javascript
JavaScript通过join函数连接数组里所有元素的方法
Mar 20 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
May 09 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
May 27 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
Jun 20 Javascript
angular双向绑定模拟探索
Dec 26 Javascript
JavaScript惰性求值的一种实现方法示例
Jan 11 Javascript
使用Vue实现简单计算器
Feb 25 Javascript
Array.filter中如何正确使用Async
Nov 04 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
用户的详细注册和判断
2006/10/09 PHP
PHP 多进程 解决难题
2009/06/22 PHP
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
作为PHP程序员你要知道的另外一种日志
2018/07/30 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
nodejs中实现阻塞实例
2015/03/24 NodeJs
全面了解JavaScript的数据类型转换
2016/07/01 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
Vue实现push数组并删除的例子
2019/11/01 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
python字典多键值及重复键值的使用方法(详解)
2016/10/31 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
Python随机生成手机号、数字的方法详解
2017/07/21 Python
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
销售副总经理岗位职责
2013/12/11 职场文书
表扬信格式
2014/01/12 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
主题班会演讲稿
2014/05/22 职场文书
银行贷款委托书范本
2014/10/11 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
务工证明怎么写
2015/06/18 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server