2015.12.01 HTML5真題練習
阿新 • • 發佈:2022-05-03
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>