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 相关文章推荐
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
Jun 22 Javascript
jtable列中自定义button示例代码
Nov 21 Javascript
JavaScript获取DOM元素的11种方法总结
Apr 25 Javascript
jquery实现简洁文件上传表单样式
Nov 02 Javascript
node.js+express制作网页计算器
Jan 17 Javascript
js 获取站点应用名的简单实例
Aug 18 Javascript
vue.js表格组件开发的实例详解
Oct 12 Javascript
vue.js指令v-model实现方法
Dec 05 Javascript
jquery单击文字或图片内容放大并居中显示
Jun 23 jQuery
读懂CommonJS的模块加载
Apr 19 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
Oct 29 Javascript
element tree树形组件回显数据问题解决
Aug 14 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中数据的批量导入(csv文件)
2006/10/09 PHP
详解PHP归并排序的实现
2016/10/18 PHP
jquery 获取json数据实现代码
2009/04/27 Javascript
javascript的offset、client、scroll使用方法详解
2012/12/25 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
详解React 在服务端渲染的实现
2017/11/16 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
vue地区选择组件教程详解
2018/05/04 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
2018/05/17 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
JavaScript console的使用方法实例分析
2020/04/28 Javascript
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
2016/06/07 Python
Python查询IP地址归属完整代码
2017/06/21 Python
python方向键控制上下左右代码
2018/01/20 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
详解python metaclass(元类)
2020/08/13 Python
python使用建议技巧分享(三)
2020/08/18 Python
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2013/05/03 面试题
小学岗位竞聘方案
2014/01/22 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
车辆转让协议书
2014/04/15 职场文书
给领导敬酒词
2015/08/12 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
配置nginx 重定向到系统维护页面
2021/06/08 Servers
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android
Win11筛选键导致键盘失灵怎么解决? Win11关闭筛选键的技巧
2022/04/08 数码科技
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫