vuepress-theme-plume/docs/10.面试/面试题-JS篇.md
pengzhanbo 5de60d4d6e feat(theme): plume-theme next devloping !
add plugin-auto-frontmatter | add plugin-blog-data | devloping new theme
2022-10-19 02:30:20 +08:00

1.7 KiB
Raw Blame History

title, tags, createTime, permalink, author, top, type
title tags createTime permalink author top type
面试题以及个人答案 JS篇
面试
2022-03-26T11:46:50.028Z /article/4ml7z17g pengzhanbo false null

JS变量声明方式有哪些有什么区别

声明变量的方式有三种,分别是varletconst。其中letconstes6新增的变量声明方式。

var声明的变量的作用域是它当前执行的上下文中,并且存在变量提升

function fn() {
    console.log(a);
    var a = 1;
    console.log(a);
}
fn();

相当于

function fn() {
    var a;
    console.log(a); // undefined
    a = 1;
    console.log(a); // 1
}
fn();

并且在可以重复声明同一变量在该声明的上下文中不会丢失其值。通过var声明的全局变量会作为窗口对象的属性。

let 声明的变量是块级作用域,不存在变量提升,并存在暂时死区,不允许在同一块级作用域重复声明。

function fn() {
    console.log(a); // ReferenceError: a is not defined
    let a = 1;
    let a = 2; // TypeError thrown
    console.loga(a);
}
fn();

const 声明一个常量,其作用域可以是全局或者是本地声明的块级作用域,与var变量不同,全局常量不会变为窗口对象的属性。常量必须在声明的同时初始化。同时声明创建的值是一个只读引用,但不意味着它所持有的值是不可变的,只是变量标识符不能重新分配。如果引用内容是对象的情况下,则可以改变对象内容,除非使用Object.freeze()方法冻结对象。const声明常量同样存在暂时死区。


JS数据类型隐式转换

————

JS模块化各自的优劣与不同点


EVENT LOOP