首页 > 代码库 > JavaScript 杂记

JavaScript 杂记

/**
 * JavaScript 运算符
 */
// instanceof
var box = {
    color: "red"
};
box instanceof Array; // false
var box = [1, 2];
box instanceof Array; // true

/**
 * JavaScript 数据类型
 */
// null 销毁引用 等待垃圾收集器来清理
var box = new Object();
box = null;

/**
 * JavaScript 函数
 */
// 用变量初始化函数
var box = function(num1, num2) {
    return num1 + num2;
};
box(1, 2); // 3

// 函数可以传递函数
function mySum(num) {
    return 10 + num;
}
function box(mySum, num) {
    return mySum(num);
}
box(mySum, 10); // 20

// 函数递归 arguments.callee()
function box(num) {
    if (num == 1) {
        return 1;
    } else {
        return num * arguments.callee(num - 1);
    }
}
box(5); // 120

// apply()
function box(name, age) {
    return name + age;
}
function sum(name, age) {
    // this表示window作用域
    // []表示传递的参数 可以用arguments代替
    // box.apply(this, [name, age]) 等价于 box.apply(this, arguments)
    return box.apply(this, [name, age]);
}
// box.length 表示函数接收的参数个数
box.length; // 2
sum("test", 18); // "test18"

// call()
function box(name, age) {
    return name + age;
}
function sum(name, age) {
    return box.call(this, name, age);
}
sum("test", 18); // "test18"

var color = "红色";
var box = {
    color: "蓝色"
};
function sayColor() {
    return this.color;
}
sayColor.call(window); // "红色"
sayColor.call(box); // "蓝色"

/**
 * JavaScript 变量
 */
// 全局变量 也是window的属性
var color = ‘red‘;
this.color; // "red"
window.color; // "red"

window.color = ‘green‘;
this.color; // "green"
color; // "green"

// 局部变量
var box = {
    color: ‘blue‘,
    getColor: function() {
        // this是box对象
        return this.color;
    }
};
box.color; // "blue"
box.getColor(); // "blue"
window.color; // "green"
window.box.color; // "blue"
// this是window对象
this.color; // "green"
this.box.getColor(); // "blue"

// if(){} for(){} 函数的()和{}没有封闭作用域 其中定义的变量为全局变量
var color = "red";
console.log(color); // red
console.log(box); // undefined
if (true) {
    var color = "yellow";
    var box = "circle";
}
console.log(color); // yellow
console.log(box); // circle

var i = -1;
console.log(i); // -1
console.log(j); // undefined
for(var i = 0, j = 0; i < 1; i++, j++){
    console.log(i); // 0
    console.log(j); // 0
}
console.log(i); // 1
console.log(j); // 1

JavaScript 杂记