美文网首页
js的变量声明

js的变量声明

作者: 鸡毛菜菜子 | 来源:发表于2020-01-08 11:43 被阅读0次

js中的变量是弱类型的,可以保存所有类型数据(在JS中变量类型由所引用的值决定),即变量没有类型而值有类型。变量名以字母、$、_开始,后跟字母、数字、_。可以使用多种方式定义变量比如var、let等。

js声明的提升

解析器会先解析代码,然后把声明的变量的声明提升到作用域最前,这就叫做变量提升。var声明的变量都会被提升至本作用域的顶部。提升的是声明而不是声明加赋值。

声明提升 本作用域内

正常来说if里的内容不会被执行,但是由于变量的提升会导致声明会被执行。输出为undifind,如果注释掉if里的内容会报错。

const、let声明的变量不能被提升。试图让其变量提升会导致TDZ又称暂时性死区,指变量在作用域内已存在,但必须在let/const声明后才能使用。const、let会在声明地方到块级顶部形成临时性死区,在这区间使用该变量都会被报错。

综上所述声明变量的时候最好保持以下两个习惯

1.变量要先声明后使用

2.建议多使用let/const声明的变量而少使用var

块作用域

:var/let/const共同点是全局作用域中定义的变量,可以在函数中使用。函数中声明的变量,只能在函数及其子函数中使用。函数中声明的变量就像声明了私有领地,外部无法访问。

异:var没用块作用域,块作用域可以简单理解为{},很容易污染全局。但是拥有函数作用域,可以使用立即执行函数进行封装。var 全局声明的变量也存在于 window对象中。let/const拥有块作用域

在for循环里使用let 可以解决污染问题。 var 全局声明的变量也存在于 window对象中

块级作用域可以理解为花括号{},外层作用域无法获取到内层作用域;内层做与偶用于可以获取到外部作用域;外层和内层使用相同的变量名,互不干扰。

块内部是可以访问到上层作用域的变量

const,使用 const 用来声明常量,这与其他语言差别不大,比如可以用来声明后台接口的URI地址。

1.常量名建议全部大写

2.只能声明一次变量

3.声明时必须同时赋值

4.不允许再次全新赋值

5.可以修改引用类型变量的值

6.拥有块、函数、全局作用域

本文内容参考https://www.houdunren.com/,向军大叔很棒!

变量的知识点就在于变量的提升、全局作用域、块级作用域。

相关文章

  • js变量声明

    var声明作用域 var 操作符定义的变量会成为包含它的函数局部变量,如果在一个函数内定义var,那么这个变量的作...

  • js的变量声明

    js中的变量是弱类型的,可以保存所有类型数据(在JS中变量类型由所引用的值决定),即变量没有类型而值有类型。变量名...

  • 专题复习三、JS基础还记得么?

    写于2017.07.29 js声明变量方法 var a =1表示声明一个变量。用var声明的变量都存在声明提升,意...

  • JAVA与JS基础知识比对(一)

    js 变量 声明: var 变量名 赋值: 先声明,在赋值 声明之后直接赋值 以逗号隔开,给多个变量赋值 只声明,...

  • 不使用var定义的变量

    js变量 JavaScript声明变量可以用var声明,也可以不用var声明,两种声明变量的方式有什么区别呢? 注...

  • JS基础

    1. JS基础 1.1 声明变量 声明变量 同时声明多个变量 1.2一些方法 isNaN 是数字返回false不是...

  • JavaScript语法

    JavaScript语法 一、JS变量 1.变量 以var声明变量为局部变量,不以var声明的变量为全局变量。 2...

  • No.18 JavaScript变量

    一、变量声明 var age; // 声明一个 名称为age 的变量 var 是一个 JS关键字,用来声明变量(...

  • ES6之 let,const

    var 声明与变量提升 var是js的变量声明语句,使用var声明的变量,无论其声明的实际语句在何处,都会被提升到...

  • 闭包那点事儿

    >js变量的作用域 全局作用域(全局变量) : 在函数外面声明的变量 生命周期(变量从声明到销毁)...

网友评论

      本文标题:js的变量声明

      本文链接:https://www.haomeiwen.com/subject/tlpjactx.html