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

2015.12.01 HTML5真題練習

HTML5學堂:每天一道題,強壯程式設計師!今日主要涉及昨日題目的解答,以及一道涉及陣列、字串、操作符的題目

HTML5真題【2015.11.30】答案解析

昨日真題題目如下,問的是函式裡面最終輸出的值是多少?

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5學堂 - H5course</title>
<meta name="viewport" content="width=device-width,user-scalable=no">
<link rel="stylesheet" href="model/css/reset.css">
</head>
<body>
<div class="wrap"></div>
<script>
function changeName(oldNum, newNum){
newNum = 5;
console.log(arguments.length * oldNum + arguments.callee.length * arguments[1]);
}
changeName('12');
</script>
</body>
</html>

本題目的答案是:NaN。

答案解析:本題目主要涉及arguments物件、函式的引數。

先來解釋一下arguments的作用:在JavaScript裡面可以通過arguments物件來訪問函式的實參。

然後說下arguments與引數的關係,其實arguments是受函式傳入實參個數的影響,與函式的形參個數無關。

該題目的實參傳入了幾個?1個是吧,所以arguments.length等於1,那麼arguments.length * oldNum等於多少?很快可以得出答案就是12。

arguments.callee是什麼意思?callee是一個指標,指向擁有這個arguments物件的函式,換句話說arguments.callee等同於函式的名字。arguments.callee.length等價於changeName.length,這個又是什麼意思?之前跟大家講過,在JavaScript裡面函式可以看做是物件,changeName.length就是獲取函式的形參個數,可以得出arguments.callee.length等於2。

最後一步了親,大家想想,剛剛我說了arguments是受函式實參個數的影響,那麼實參幾個呢?只有1個,那麼arguments[1]存在嗎?當然不存在呀,所以裡面訪問到的undefined,最終的值為NaN不需要我再做解釋了吧。

答案:1 * 12 + 2 * undefined

HTML5真題【2015.12.01】題目

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5學堂 - H5course</title>
<link rel="stylesheet" href="reset.css">
</head>
<body>
<script>
console.log([] + [] + 'foo'.split(''));
</script>
</body>
</html>