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的作用域链执行前已创建
五、声明提前

浙公网安备 33010602011771号