您的位置:首页 > 汽车 > 时评 > 微信开放平台的应用场景_大连制作网站软件_百度云链接_国内网络营销公司排名

微信开放平台的应用场景_大连制作网站软件_百度云链接_国内网络营销公司排名

2025/4/3 22:43:47 来源:https://blog.csdn.net/qq_39706570/article/details/146610721  浏览:    关键词:微信开放平台的应用场景_大连制作网站软件_百度云链接_国内网络营销公司排名
微信开放平台的应用场景_大连制作网站软件_百度云链接_国内网络营销公司排名

目录

目标

概述

实战

变量提升

var

let

const

作用域


目标

        掌握变量的创建方法,了解他们的作用域。


概述

有三种方法创建变量,分别是var、let、const,区别如下:

特性varletconst
作用域函数作用域块级作用域块级作用域
变量提升是,但值是undefined是,但未初始化(TDZ)是,但未初始化(TDZ)
是否可重新赋值可以可以不能
是否可重复声明可以不可以不可以
是否必须初始化

        其中,var是旧代码的变量声明方式,考虑到用这种方式声明变量会导致各种问题,官方推荐使用let,尤其在循环中。const因为不可以重新赋值和必须初始化的原因,所以适合声明常量。


实战

变量提升

        变量和函数声明会被提升到其作用域的顶部,但不同的声明方式(var、let、const)在提升时的行为不同。如果输出一个没有定义的变量,则会报ReferenceError错误,代码如下:

//Uncaught ReferenceError ReferenceError: a is not defined
console.log(a)

var

//undefined
console.log(a)
var a = 1
//1
console.log(a)

等价于以下代码:

var a
//undefined
console.log(a)
a = 1
//1
console.log(a)

结论

        var具备变量提升的功能,变量被提升后初始化为undefined


let

//报错:Uncaught ReferenceError ReferenceError: Cannot access 'a' before initialization
console.log(typeof a); 
//如果没有这行代码,则第一个输出是undefined
let a =1;
//不会输出
console.log(a);

结论

        let具备变量提升的功能,变量被提升但没有初始化。


const

//报错:Uncaught ReferenceError ReferenceError: Cannot access 'a' before initialization
console.log(typeof a); 
//如果没有这行代码,则第一个输出是undefined
const a =1;
//不会输出
console.log(a);

结论

        const具备变量提升的功能,变量被提升但没有初始化。


作用域

        var是函数作用域,let和const是块级别作用域。也就是说:var的作用范围仅限于最近的函数。let和const的作用域是最近的{}块内,出了这个块就无法访问。

演示

function fun(){if(true){var a=1}console.log(a)
}
//1
fun()function fun2(){if(true){let b=1}console.log(b)
}try {fun2()
} catch (error) {//报错了: b is not definedconsole.log("报错了:",error.message)
}function fun3(){if(true){const c=1}console.log(c)
}try {fun3()
} catch (error) {//报错了: c is not definedconsole.log("报错了:",error.message)
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com