JS 条件,循环,异常,函数,闭包,对象,作用域

1.条件 (if  switch)

        var a = 61;
        if(a>80){
            console.log('优');
        }else if(a<60){
            console.log('不及格');
        }else {
            console.log('良')
        }
        var a = 'b';
        switch (a){
            case 'a':
                console.log('条件a');
                break;
            case 'b':
                console.log('条件b');
                break;
            default:
                console.log('缺省');
        }

2.循环

//for循环的两种方式
        for(var i=0;i<5;i++){
            console.log(i);
        }
        arr = [11,22,33,44,55];
        for(var item in arr){
            console.log(item,arr[item]);
        }
while (true){
         console.log('1');
        }

 3.异常

        try {
            var a = b;
        }catch (e){
            console.log(e);
        }finally {
            console.log('出错了');
        }

注:主动抛出异常 throw Error('xxxx')

4.函数

        //普通函数
        function f1(arg) {
            console.log(arg);
            return 123;
        }
        var tem = f1(123);
        console.log(tem)
        //匿名函数
        var f2 = function (arg) {
            console.log(arg);
        }
        f2(456);
        //自执行函数
        (function (arg) {
            console.log(arg)
        })(789);

5.闭包,

闭包是指可以包含自由(未绑定到特定对象)变量的代码块。

「闭包」,是指拥有多个变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

闭包是个函数,而它「记住了周围发生了什么」。表现为由「一个函数」体中定义了「另个函数」

由于作用域链只能从内向外找,默认外部无法获取函数内部变量。闭包,在外部获取函数内部的变量。

        function f1() {
            var a = 100
            function f2(arg) {
                console.log(a+arg)
            }
            return f2
        }
        f = f1();
        f(100)

 6.面向对象

        function Person(name,age) {
            this.name = name;
            this.age = age;
            this.eat =function (arg) {
                console.log(this.name+' eat rice '+arg+' years');
            }
        }
        var p1 = new Person('zhang',10);
        p1.eat(8);
        var p2 = new Person('li',15);
        p2.eat(10);

每个对象中都有一个eat函数很浪费空间,可以使用原型解决这个问题

        function Person(name,age) {
            this.name = name;
            this.age = age;
        }
        Person.prototype.eat = function (arg) {
            console.log(this.name+' eat rice '+arg+' years');
        }
        var p1 = new Person('zhang',10);
        p1.eat(8);
        var p2 = new Person('li',15);
        p2.eat(10);
        function Person(name,age) {
            this.name = name;
            this.age = age;
        }
        Person.prototype ={
            eat:function (arg) {
                console.log(this.name+' eat rice '+arg+' years');
            },
            sleep:function () {
                console.log('i sleep in bed');
            }
        }
        var p1 = new Person('zhang',10);
        p1.eat(8);
        p1.sleep();
        var p2 = new Person('li',15);
        p2.eat(10);
        p2.sleep();

 7.只需五句话搞定JavaScript作用域

  一、JavaScript中无块级作用域

  二、JavaScript采用函数作用域

  三、JavaScript的作用域链

  四、JavaScript的作用域链执行前已创建

  五、声明提前

posted @ 2017-05-19 15:31  1916  阅读(149)  评论(0)    收藏  举报