Rumah > hujung hadapan web > tutorial js > 面试常问之JavaScript变量提升

面试常问之JavaScript变量提升

青灯夜游
Lepaskan: 2019-11-28 17:14:02
ke hadapan
2395 orang telah melayarinya

什么是JavaScript变量提升?这是面试经常会被问到的。下面本篇文章就来给大家介绍一下JavaScript变量提升,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

面试常问之JavaScript变量提升

JavaScript变量提升

提升(Hoisting)JavaScript将声明移动到顶部的默认行为。【相关课程推荐:JavaScript视频教程

JavaScript声明提升,在JavaScript中,变量可以在使用后声明。换一种说法; 变量可以在声明之前使用。示例1给出与示例2相同的结果:

例子1:

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>js</title>
<body>
<p id="demo"></p>
<script>
    x = 5; // 给x赋值5
    elem = document.getElementById("demo"); // 查找一个元素
    elem.innerHTML = x;           // 在元素内显示x
    var x; // 声明 x
</script>
</body>
</html>
Salin selepas log masuk

例子2:

!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>js</title>
<body>
<p id="demo"></p>
<script>
    var x; // 声明 x
    x = 5; // 把5赋值给x
    elem = document.getElementById("demo");
    elem.innerHTML = x;
</script>
</body>
</html>
Salin selepas log masuk

要理解这一点,您必须理解“声明提升(英文:Hoisting)”一词。 是指JavaScript将所有声明移动到当前范围顶部(到当前脚本或当前函数的顶部)的默认行为。

但在ES6 中改变了这个默认的行为,ES6的let声明的变量和const声明常量不会被提升!

JavaScript初始化不会提升

JavaScript仅提升声明,而不是初始化。示例1和示例2是不同的结果:

示例1:

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>js</title>
<body>
<p id="demo"></p>
<script>
    var x = 5; // 初始化 x
    var y = 7; // 初始化 y
    elem = document.getElementById("demo"); // 查找一个元素
    elem.innerHTML = x + " " + y;       // 显示x和y
</script>
</body>
</html>
Salin selepas log masuk

例子2:

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>js</title>
<body>
<p id="demo"></p>
<script>
    var x = 5; // 初始化 x
    elem = document.getElementById("demo"); // 查找一个元素
    elem.innerHTML = x + " " + y;       // 显示x和y
    var y = 7; // 初始化 y
</script>
</body>
</html>
Salin selepas log masuk

在顶部声明你的变量!

对许多开发人员来说,变量提升(Hoisting)是一种未知或被忽视的JavaScript行为。如果开发人员不理解提升,程序可能包含错误(Error)。为避免错误,请始终在每个范围的开头声明所有变量。由于这是JavaScript解释代码的方式,因此它始终是一个很好的规则。

本文来自 js教程 栏目,欢迎学习!

Atas ialah kandungan terperinci 面试常问之JavaScript变量提升. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan