FED

©FrontEndDev.org
2015 - 2024
web@2.22.0 api@2.20.0

前端进阶计划第42周作业

2015年第42周——基本语法

变量提升

var a = 1;
var o = {};

(function(o1){
    var b = a = c = 2;
    o1.a = 3;
    
    alert(typeof a !== 'undefined' ? a : 'undefined');
    alert(typeof b !== 'undefined' ? b : 'undefined');
    alert(typeof c !== 'undefined' ? c : 'undefined');
    alert(o1.a);
    alert(o.a);
    alert(o === o1);
    function b(){};
}(o));

alert(typeof a !== 'undefined' ? a : 'undefined');
alert(typeof b !== 'undefined' ? b : 'undefined');
alert(typeof c !== 'undefined' ? c : 'undefined');
alert(o.a);

作用域

var a = 1;
var o1 = {
    a: 2,
    f1: function(){
        alert(typeof this.a === 'undefined' ? 'undefined' : this.a);
    }
};
var o2 = {
    a: 3,
    f2: function(){
        alert(typeof this.a === 'undefined' ? 'undefined' : this.a);
    
        return function(){
            alert(typeof this.a === 'undefined' ? 'undefined' : this.a);
        };
    }
};

o1.f1();
o2.f2();
o2.f2()();

数据类型

var a1 = [];
var a2 = [];

alert(a1 === a2);

var a3 = '123';

a3.s = 123;
a3.s += 1;
alert(a3.s);

数值

alert(123456789012345678901 > 123456789012345678900);

// 将“你好,javascript”转换成 unicode 字符集

对象

var o = {
    .1: "呵呵"
};

alert(o['0.1']);
alert(o['.1']);

运算符

1 + '2';
'1' + 2;
'a' + 1;
1 + 'a';

var a = 1;
var b = 2;

if(a = b){
    alert(1);
} else {
    alert(2);
}

var x1 = [] + [];
var x2 = [] + {};
var x3 = {} + {};
var x4 = {} + [];

函数

typeis

实现typeis方法,可以正确返回传入的数据类型。

typeis('1'); // => "string"
typeis(1); // => "number"
typeis({}); // => "object"
typeis([]); // => "array"
typeis.string('1'); // => true
typeis.number(1); // => true
typeis.object({}); // => true
typeis.array([]); // => true

each

实现each方法,可以正确遍历对象、数组,并且能够正确 break。

each([1, 2, 3], function(index, val){
    alet(val);

    if(val){
        return false;
    }
});

each({
    a: 1,
    b: 2,
    c: 3
}, function(key, val){
    alet(val);

    if(val){
        return false;
    }
});

柯里化

实现无限柯里化加法。

add(1)(2)(3)(); // => 6
add(1)(2)(3)(4)(); // => 10
add(1)(2)(3)(4)(5)(); // => 15

传参

实现以下功能,f函数可以根据参数的形参个数返回不同的结果。

f(function(a, b){
    alert(a + b); // => 1 + 2
});
f(function(a, b, c){
    alert(a + b + c); // => 3 + 4 + 5
});

参数

实现无限加法运算。

add(1, 2, 3); // => 6
add(1, 2, 3, 4); // => 10
add(1, 2, 3, 4, 5); // => 15