提升(Hoisting)
其实主要是为了厘清 JavaScript 的运作所提出的观念,在 ECMAScript 并未提出这个专有名词,而所谓的提升,就是先将函式
与变数宣告
先提到程序码最上面的动作,再接着执行程序码
JavaScript 会在执行环境中运行程序码,而在建立一个执行环境时可以分为两个阶段:
undefined
在创造环境阶段优先把函式与变数的记忆体空间准备好,就叫做
提升 Hositing
同上面所述,在创造阶段时,会将程序码中所有变数宣告提到最前面,并在记忆体中预留空间给变数後,系统会先给予一个 undefined
的初始值,等到了执行阶段,会依序执行剩下的程序码,这时候才会赋予变数值,范例如下:
var nickName = 'Carol';
console.log(nickName); // Carol
// 1. 创造阶段
// 先宣告变数 nickName,在记忆体中预留空间,预设值为 undefined
var nickName;
// 2. 执行阶段
// 赋予变数 nickName 值
nickName = 'Carol';
// 显示变数 nickName 值
console.log(nickName); // Carol
console.log(nickName);
var nickName = 'Carol';
// 1. 创造阶段
// 先宣告变数 nickName,在记忆体中预留空间,预设值为 undefined
var nickName;
// 2. 执行阶段
// 显示变数 nickName 值
console.log(nickName); // undefined
// 赋予变数 nickName 值
nickName = 'Carol';
因为系统找不到 变数 nickName
,所以显示错误讯息 Uncaught ReferenceError: nickName is not defined
console.log(nickName);
// Uncaught ReferenceError: nickName is not defined
undefined
与is not defined
差异可在 [Day6] 'undefined' vs 'not defined' 查看更多内容
<<: [FGL] TYPE / FUNCTION / INTERFACE 让FGL更贴近物件语言
今日文章目录 > - 视差背景 > - 事前准备 > - CSS 说明 >...
父子元件沟通 子元件与父元件最简单的分别方法,被引入的元件叫做子元件,而引入的元件的元件叫做父元件 ...
背景故事 年初的时候,看到公司长官在 FB 分享的可爱铁人赛贴纸,长官说,想要可爱贴纸那就自己来报名...
今天发现了一些现象,所以就不先探索程序码,讲讲看到的状况。 首先是版本的问题。一直觉得说明文件事不是...
今天若想知道泡热可可的温度增加与可可粉的量的变化,其简单回归方程序。 首先先建立资料 接着点选工具列...