Js-w3school(2024

1.作用域指的是您有权访问的变量集合。在 JavaScript 中有两种作用域类型:

• 局部作用域:在 JavaScript 函数中声明的变量,会成为函数的局部变量。局部变量的作用域是局部的:只能在函数内部访问它们。由于只能在函数内部识别局部变量,因此能够在不同函数中使用同名变量。在函数开始时会创建局部变量,在函数完成时会删除它们。

• 全局作用域:函数之外声明的变量,会成为全局变量。全局变量的作用域是全局的:网页的所有脚本和函数都能够访问它。如果您为尚未声明的变量赋值,此变量会自动成为全局变量。(在“严格模式”中不会自动创建全局变量。)在 HTML 中,全局作用域是 window。所有全局变量均属于 window 对象。

2. JavaScript 拥有函数作用域:每个函数创建一个新的作用域。

3. 作用域决定了这些变量的可访问性(可见性)。

函数内部定义的变量从函数外部是不可访问的(不可见的)。

4. 任何函数,包括 window 对象,能够覆盖您的全局变量和函数。

5. JavaScript 变量的有效期:

JavaScript 变量的有效期始于其被创建时。

局部变量会在函数完成时被删除。

全局变量会在您关闭页面是被删除。

6. 函数参数也是函数内的局部变量。

二十三、js提升(Hoisting)


1.提升(Hoisting)是 JavaScript 将声明移至顶部的默认行为。(提升到当前脚本或当前函数的顶部)

2. 在 JavaScript 中,可以在使用变量之后对其进行声明。

换句话说,可以在声明变量之前使用它。

x = 5; // 把 5 赋值给 x

elem = document.getElementById(“demo”); // 查找元素

elem.innerHTML = x; // 在元素中显示 x

var x; // 声明 x

  1. let 和 const 关键字

用 let 或 const 声明的变量和常量不会被提升。这两个关键字在 JavaScript 中提供了块作用域(Block Scope)变量(和常量)。

(1)let块作用域

{

var x = 10;

}

// 此处可以使用 x

{

let x = 10;

}

// 此处不可以使用 x

let在块内重新声明变量不影响块外

var x = 10;

// 此处 x 为 10

{

var x = 6;

// 此处 x 为 6

}

// 此处 x 为 6

var x = 10;

// 此处 x 为 10

{

let x = 6;

// 此处 x 为 6

}

// 此处 x 为 10

(2)let、const同作用域下重新声明不允许

var x = 10; // 允许

let x = 6; // 不允许

{

var x = 10; // 允许

let x = 6; // 不允许

}

let x = 10; // 允许

let x = 6; // 不允许

{

let x = 10; // 允许

let x = 6; // 不允许

}

let x = 10; // 允许

var x = 6; // 不允许

{

let x = 10; // 允许

var x = 6; // 不允许

}

const x = 2; // 允许

const x = 3; // 不允许

x = 3; // 不允许

var x = 3; // 不允许

let x = 3; // 不允许

{

const x = 2; // 允许

const x = 3; // 不允许

x = 3; // 不允许

var x = 3; // 不允许

let x = 3; // 不允许

}

在不同的作用域或块中,通过 let 、const重新声明变量是允许的:

let x = 6; // 允许

{

let x = 7; // 允许

}

{

let x = 8; // 允许

}

const x = 2; // 允许

{

const x = 3; // 允许

}

{

const x = 4; // 允许

}

(3)let循环作用域

如果在循环中用 let 声明了变量 i,那么只有在循环内,变量 i 才是可见的。

let i = 7;

for (let i = 0; i < 10; i++) {

// 一些语句

}

// 此处 i 为 7

(4)let函数作用域

在函数内声明变量时,使用 var 和 let 很相似。它们都有函数作用域

(5)let全局作用域

基础面试题

主要内容包括:HTML,CSS,JavaScript,浏览器,性能优化等等

允许

}

(3)let循环作用域

如果在循环中用 let 声明了变量 i,那么只有在循环内,变量 i 才是可见的。

let i = 7;

for (let i = 0; i < 10; i++) {

// 一些语句

}

// 此处 i 为 7

(4)let函数作用域

在函数内声明变量时,使用 var 和 let 很相似。它们都有函数作用域

(5)let全局作用域

基础面试题

主要内容包括:HTML,CSS,JavaScript,浏览器,性能优化等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值