面试官常问之说说js中var、let、const的区别

让我来给你详细讲解一下“面试官常问之说说js中var、let、const的区别”。

区别概述

在JavaScript中,变量声明有三种方式:varletconst。它们之间的区别主要在于作用域、值的可变性和赋值方式。

  • var: 可以重复赋值,不存在块级作用域,声明的变量会被提升到所在函数的顶部。
  • let: 允许块级作用域,不能重复声明,可以更改已经赋值的值,在声明前调用会抛出错误。
  • const: 声明后不能被修改,也要遵循块级作用域规则,不能重复声明,必须赋初值。

区别细讲

  1. 变量重复赋值

var可以多次赋值,一个变量可以在同一作用域中被多次声明,后面的声明会覆盖前面的声明。

var a = 1;
var a = 2;
console.log(a); // 输出2

letconst则不能在同一作用域中重复声明同一个变量。

let b = 1;
let b = 2; // 报错:Uncaught SyntaxError: Identifier 'b' has already been declared
  1. 变量作用域

var声明的变量,它的作用域是当前的函数作用域,而不是块级作用域。

function func() {
  for (var i = 0; i < 3; i++) {
    console.log(i);
  }
  console.log("after loop: " + i); //输出 3
}

在上述代码中,循环内部的变量i虽然在循环结束后不可用,但是它的值却可以在循环结束后被输出。

letconst声明的变量,只在当前块级作用域内有效。

function func() {
  for (let i = 0; i < 3; i++) {
    console.log(i);
  }
  console.log("after loop:" + i); // 报错:Uncaught ReferenceError: i is not defined
}

在上述代码中,用let声明的变量i只在循环内部有效,所以在循环结束后,i就无法被识别。

  1. 声明变量时的赋值

当用const声明时必须在同一行进行赋值,赋初值后不可更改。

const c = 1;
c = 2; // 报错:Uncaught TypeError: Assignment to constant variable.

而用letvar声明时,如果不赋初值会被默认声明为undefined。

let d;
var e;
console.log(d); // undefined
console.log(e); // undefined

示例说明

  1. 使用let来改进循环
for (let i = 0; i < 3; i++) {
  console.log(i);
}
console.log("after loop: " + i); // 报错:Uncaught ReferenceError: i is not defined

在这个示例中,使用了let来声明i变量,所以在循环结束后,i变量就无法被使用了。

  1. 使用const声明常量
const PI = 3.14159;
PI = 3.14; // 报错:Uncaught TypeError: Assignment to constant variable.
console.log(PI);

在这个示例中,用const声明了PI这个常量,如果尝试改变PI的值,就会抛出一个类型错误的异常。这样可以确保PI的值不变,防止出现意外的修改。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:面试官常问之说说js中var、let、const的区别 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • Javascript继承机制的设计思想分享

    Javascript继承机制的设计思想分享 概述 Javascript是一门基于原型实现的语言,继承机制是Javascript的核心概念之一。本文将讲述Javascript继承机制的设计思想和实现方式,为读者提供全面的知识体系。 原型链 Javascript的继承机制是基于原型链实现的,原型链是一种基于对象的链式结构。每个Javascript对象都有一个指向…

    JavaScript 2023年6月11日
    00
  • 微信小程序教程系列之页面跳转和参数传递(6)

    我会为您详细讲解 “微信小程序教程系列之页面跳转和参数传递(6)” 的完整攻略。以下是完整步骤: 步骤一:页面跳转 1. 使用navigateTo方法进行跳转 在小程序中,我们可以通过navigateTo方法进行页面跳转。具体方法为: wx.navigateTo({ url: ‘pages/page_name/page_name’ }) 其中,page_na…

    JavaScript 2023年6月11日
    00
  • 在页面加载之后执行JavaScript

    在页面加载之后执行JavaScript通常包括以下两种情况: 在DOMContentLoaded事件触发之后执行JavaScript代码 DOMContentLoaded事件在文档结构已经加载完成,但是加载的所有资源(例如图片)还没有完成的时候触发。可以使用addEventListener()方法监听DOMContentLoaded事件,并在回调函数中执行J…

    JavaScript 2023年6月11日
    00
  • 浅谈android nexus私服的使用

    浅谈 Android Nexus 私服的使用 引言 随着 Android 开发的不断深入,项目迭代的频率也越来越快。然而,每当你切换一个项目或者重构项目时,你需要重新从互联网下载和安装所有的依赖项,这是一件非常耗时的事情。尤其是在国内网络环境下,从 Maven 中央仓库下载依赖会非常慢而且不稳定。 为了解决这个问题,很多公司都建立了自己的 Nexus 私服来…

    JavaScript 2023年5月28日
    00
  • javascript下判断一个对象是否具有指定名称的属性的的代码

    要判断一个 JavaScript 对象是否具有指定名称的属性,可以使用 in 或者 hasOwnProperty() 方法。 使用 in 关键字进行属性判断 in 关键字可以用于判断一个对象是否具有指定名称的属性,返回布尔值 true 或 false。 const person = { name: ‘张三’, age: 20 }; // 判断对象是否具有指定…

    JavaScript 2023年5月27日
    00
  • Bootstrap表单Form全面解析

    Bootstrap表单Form全面解析 什么是Bootstrap表单Form? Bootstrap表单Form是Bootstrap前端框架中一个用于构建表单的组件,用于简化表单的开发过程。通过使用Bootstrap表单Form,开发者可以快速构建出漂亮、易用、兼容性好的表单,提高工作效率。Bootstrap表单Form主要包括水平布局和垂直布局两种形式,以及…

    JavaScript 2023年6月10日
    00
  • 详解mvc使用JsonResult返回Json数据

    下面是详解mvc使用JsonResult返回Json数据的攻略: 步骤一:编写代码 在MVC的控制器中定义一个方法,例如: public JsonResult GetStudent() { var student = new Student { Name = "小明", Age = 18, Gender = "Male&quot…

    JavaScript 2023年5月27日
    00
  • JavaScript Location对象使用方法汇总

    JavaScript中的Location对象代表着当前页面的URL信息,包括协议、主机名、端口号、路径、查询字符串和片段标识符等。Location对象还可以通过编程方式来访问和操作浏览器的历史记录。 下面是Location对象的一些重要属性和方法: href属性(用于获取或修改当前页面的URL) console.log(location.href); // …

    Web开发基础 2023年3月30日
    00
合作推广
合作推广
分享本页
返回顶部