1. 程式人生 > >JavaScript 練習題2

JavaScript 練習題2

  • 練習1
var x = 1, y = z = 0;

function add(n) {
    return n = n + 1;
}

y = add(x);

function add(n) {
    return n = n + 3;
}

z = add(x);

console.log(x, y, z); // 1, 4, 4 預編譯 函式提前 同名函式 內容被覆蓋
  • 練習2
// 下列程式碼中 能打印出[1,2,3,4,5]的是  A C D
// A 
function foo(x) {
    console.log(arguments);
    return x;
}
foo(1,2,3,4,5);

// B // 不執行 也不報錯
function foo(x) {
    console.log(arguments);
    return x;
}(1,2,3,4,5);

// C // 立即執行函式
(function foo(x) {
    console.log(arguments);
    return x;
})(1,2,3,4,5)

// D
function foo() { 
    bar.apply(null,arguments);
    // 等價於 bar(arguments)
}
function bar(x) { 
    console.log(arguments); 
}
foo(1, 2 ,3, 4, 5)
  • 練習題3
parseInt(3, 8); // 把3當做8進位制 轉為10進位制 輸出 3

parseInt(3, 2); // 把3當做2進位制 2進位制只有0和1 輸出 NaN

parseInt(3, 0); // 0進位制 沒有 部分瀏覽器返回0 部分瀏覽器報錯
  • 練習題4
function b(x, y, a) {
    arguments[2] = 10;
    console.log(a);
}

b(1, 2, 3); // 輸出 10 arguments和形參相對應 互相改

function c(x, y, a) {
    a = 10;
    console.log(arguments[2]);
}

c(1, 2, 3); // 輸出 10

  • 練習題5
// 輸出一個字串的長度 中文為2個字元

function retByteslen(n) {
    n = n.toString();
    var len,
        count;
    len = count = n.length;
    for(var i = 0; i < len; i++) {
        if(n.charCodeAt(i) > 255) {
            count ++;
        }
    }
    return count;
}

retByteslen('abc 你好!'); // 10