1. 程式人生 > 其它 >2015.12.11 HTML5真題練習

2015.12.11 HTML5真題練習

HTML5學堂:每天一道題,強壯程式設計師!今日主要涉及12.10題目函式以及return(返回值)、預編譯執行的解答,以及一道涉及函式遞迴呼叫的題目。

HTML5真題【2015.12.10】答案解析

12.10真題題目如下,最終輸出的結果是多少?

<script>
// 程式碼段1
var x = 1;
function b() {
x = 10;
return;
function x() {
console.log('HTML5學堂');
}
}
b();
console.log(x);


// 程式碼段2
var x = 1;
function b() {
x = 10;
return function x() {
console.log('HTML5學堂');
};
}
b();
console.log(x);
</script>

本題目的答案是:程式碼段1輸出內容為1;程式碼段2輸出內容為10

函式宣告可以分為兩種,一種是函式表示式宣告另外一種是普通函式宣告,函式表示式宣告不會提前編譯,普通函式會提前編譯。常見的函式表示式var ftn = function() {}。放在return 裡面的函式也是稱作為函式表示式宣告,所以沒有提前編譯了,導致函式裡面並沒有宣告x,直接呼叫父級。

第一段程式碼,return加分號,所以不能認為函式是作為return的返回值,對於x這個普通函式宣告,提前編譯了,也就是說函式內部有這個x變數。

第二段程式碼,return沒有加分號,所以認為return的返回值,對於x這個函式表示式宣告並沒有提前編譯了,也就是說函式內部沒有這個x變數。

HTML5真題【2015.12.11】題目

<script>
function show(n) {
if (n <= 0) {
return 1;
} else {
return n * show(n - 1);
}
}
console.log(show(5));
</script>

關於每日程式碼練習題的答案和解析,我們會在明日文章當中,釋出相關答案以及基本原理。(PS:週六日不釋出題目)