2015.12.11 HTML5真題練習
阿新 • • 發佈:2022-05-04
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:週六日不釋出題目)