var的特性是什么?是es6新增特性吗?
var不是es6新增的特性;使用var关键字可以声明一个变量,声明的变量既是全局变量也是顶层变量,可以为其初始化赋值也可以不赋值,初始化赋值其可以是任意类型,不赋值是其为默认值。
如何快速入门VUE3.0:进入学习
本教程操作环境:windows10系统、ECMAScript 6.0版本、Dell G3电脑。
var不是es6新增特性
使用var关键字可以声明一个变量,可以为其初始化赋值也可以不赋值,初始化赋值其可以是任意类型,不赋值是其为默认值undefined,var声明的一般为全局作用域,并添加为window的属性(函数里边声明的除外其为函数作用域)。
var
用var声明的变量既是全局变量也是顶层变量(在浏览器环境顶层对象指的是window对象,在node指的是global对象)
使用var生命的变量存在变量提升的情况
使用var能够对一个变量进行多次声明,后声明的变量会覆盖前面的变量声明
在函数中使用var声明变量的时候,该变量是局部的;如果在函数内不使用var,改变量是全局的
与之相比的是let,let是es6新增的特性
let
是es6新增的命令,用于声明变量
用法类似于var,但是所声明的变量只在let命令所在的代码块内有效,不存在变量提升;只要块级作用域内存在let命令,这个区域就不再受外部影响
使用let声明变量前,该变量都不可用,也就是大家常说的暂时性死区(let不允许在相同作用域中重复声明,因此我们不能在函数内部重新声明参数)
var 声明变量
script> /* *1.使用var 声明变量,可以保存任意数据类型的值, * Undefined、Null、Number、String、Symbol、Boolean、Object 7种类型 *2.在同一代码块位置: * var userName; userName="marshal" * var userName="marshal" 是完全等价有效的 * var 可以以逗号分隔,定义多个变量,分号结束 * var userName,userAge,userAddress; */ var userName="marshal"; //var userName; userName="marshal"; console.log(userName); /script>
用开发者工具查看如下图:
var 作用域说明
作用域:在运行时,代码区域中变量、对象、函数及其他资源访问的可见性。JavaScript分为两种类型,全局和局部。与Script 标签同级,可理解为全局,在浏览器中这些称为windows对象,所以使用var 定义的全局变量、函数都是window对象的属性和方法。局部是定义在{}花括号内,如函数内部,定义在局部作用域,一般来说函数外部是不能访问的,但可以通过闭包方式去解决(后续再讲)。
script> /* * 1.定义函数localVariable * 2.在函数内部使用var 声明变量userName,并设置值为marshal * */ function localVariable(){ var userName="marshal"; console.log("函数内部访问"+userName); //输出函数内部访问marshal } localVariable(); console.log("函数外部访问"+userName); //报错:UncaughtReferenceError: userName is not defined /script>
函数localVariable()调用后,内函数内部使用var 声明的变量、对象随之销毁,所以报错:UncaughtReferenceError: userName is not defined
如果在函数内部将var 省略,则为全局变量,示例代码如下:
script> /* * 1.定义函数localVariable * 2.在函数内部省去var关键字 * 3.注不建议省去var 关键字,局部的全局变量很难维护,容易埋坑 */ function localVariable(){ userName="marshal"; console.log("函数内部访问"+userName); } localVariable(); //函数调用后,userName变为全局变量,可使用window对象访问。 console.log("函数外部访问"+window.userName); /script>
到此这篇关于“var的特性是什么?是es6新增特性吗?”的文章就介绍到这了,感谢各位的阅读,更多相关var的特性是什么?是es6新增特性吗?内容,欢迎关注网络资讯频道,小编将为大家输出更多高质量的实用文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: var的特性是什么?是es6新增特性吗?
本文地址: https://pptw.com/jishu/652982.html