百科狗-知识改变命运!
--

JavaScript中var,let与const之间有什么区别

乐乐1年前 (2023-12-02)阅读数 24#综合百科
文章标签变量声明

var,let和const的区别在于:var的变量声明在代码执行前且工作范围在当前执行的上下文中,let是允许创建一个变量但只作用在它的块里,const与let什么相似唯一的差别是const定义的变量不可更改

本篇文章主要是通过在JavaScript (ES6) 中创建变量的方法来介绍var、 let和const之间的区别,具有一定的参考作用,希望对大家有所帮助。

推荐课程:JavaScript教程

var VS let

var和let之间的主要区别不是使用函数作用域,而是使用块作用域。 这意味着使用let关键字创建的变量在创建它的“块”内以及任何嵌套块中都可用。

function discountPrices (prices, discount) {

var a = []

for (var i = 0; i

var discountedPrice = prices[i] * (1 - discount)

var finalPrice = Math.round(discountedPrice * 100) / 100

a.push(finalPrice)

} console.log(i) // 3 console.log(discountedPrice) // 150

console.log(finalPrice) // 150

return a

}在上面的例子中之所以能够在for循环之外使用i,discountedPrice和finalPrice,是因为它们是用var声明的,而var是函数作用域。如果我们将var换成let会发生什么情况呢?

function discountPrices (prices, discount) {

let a = []

for (let i = 0; i

let discountedPrice = prices[i] * (1 - discount)

let finalPrice = Math.round(discountedPrice * 100) / 100

a.push(finalPrice)

}

console.log(i) // 3

console.log(discountedPrice) // 150

console.log(finalPrice) // 150

return a

}

discountPrices([100, 200, 300], .5) // 这儿会报错i未定义这个案例告诉我们的是,使用let声明的变量是块作用域,而不是函数作用域。 因此在“块”之外访问i(或discountedPrice或finalPrice)都会报错

JavaScript中var,let与const之间有什么区别

下一个区别与变量提升有关。提升的定义是“JavaScript解释器会在所谓的'创建'阶段将变量声明赋值为undefined的默认值。

例:

function discountPrices (prices, discount) {

console.log(discounted) // undefined

var a = []

for (var i = 0; i

var discountedPrice = prices[i] * (1 - discount)

var finalPrice = Math.round(discountedPrice * 100) / 100

a.push(finalPrice)

}

console.log(i) // 3

console.log(discountedPrice) // 150

console.log(finalPrice) // 150

return a}如果想要在声明变量之前使用let声明的变量,而不是未定义(如使用var声明的那些变量),程序将会报错

function discountPrices (prices, discount) {

console.log(discounted) // 错误

let a = []

for (let i = 0; i

let discountedPrice = prices[i] * (1 - discount)

let finalPrice = Math.round(discountedPrice * 100) / 100

a.push(finalPrice)

}

console.log(i) // 3

console.log(discountedPrice) // 150

console.log(finalPrice) // 150

return a}结论是

var:变量声明在代码执行之前被处理,它的作用范围在其当前执行的上下文中

let:let语句允许我们创建一个变量,其范围仅限于使用它的块里。

let VS const

既然已经理解了var和let之间的区别,那么const呢? 事实证明,const与let几乎完全相同。 但是唯一的区别是,一旦使用const为变量赋值,就无法将其重新赋值给新值。

let name = 'Tyler'

const handle = 'tylermcginnis'

name = 'Tyler McGinnis' //正确

handle = '@tylermcginnis' //错误从上面的内容可以看出用let声明的变量可以重新赋值,但用const声明的变量不能。所以只要你想要一个变量是不可变的,你可以用const声明它。但是用const声明变量并不意味着它是不可变的,只是无法重新赋值,例:

const person = {

name: 'Kim Kardashian'

}

person.name = 'Kim Kardashian West' // 正确

person = {} // 错误因此即使使用const声明对象,也不意味着不能改变其任何属性。 它只表示无法将其重新分配给新值

总结:

export default {} 跟 var vm = new Vue({})

完全不是同一回事.

前者是es6的module中的语法,后者是创建一个vue实例.

我想引起你的误解是因为你用了webpack开发vue同时用了vue-loader.

其实这最终会通过vue-loader处理成原生js代码.即无论如何都要new Vue()

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)