获得对象的所有属性名 || 将对象o的所有属性名放到数组中
var o = {x:1,y:2,z:3}; var arr = []; var i = 0; for(arr[i++] in o){};//是空的循环体 console.log(arr); ["x", "y", "z"]
在js中遇到return;可以看到运行到return;函数到这就停止了,循环也停止了,只是return;后面的不执行了,在这之前打印的还在,也就是说函数和循环中的return;没有原子性的,不会回滚像没打印一样。
function a(x){ for(var i = 0;i<x;i++){ console.log(i+':'+i); if(i == 5){return;} console.log('after return'); } }; a(8); 0:0 after return 1:1 after return 2:2 after return 3:3 after return 4:4 after return 5:5
怎样自定义异常 || 怎样抛出自己的异常 || 怎样自己制作异常
function fa(x){ if(x<0){throw new Error(x+'小于0');}//抛出异常时,后面的代码就不再执行了 console.log(x); } fa(-1); Uncaught Error: -1小于0(…)
关于try catch只要执行了try里代码的一部分,无论try代码块执行了多少,finally从句都会被执行
判断对象有没有某个属性
if(o.x !== undefined){ 这是o有x属性的情况 }else{ 这是o没有x属性的情况 }
函数的传递的参数多于需要的参数时,多余的会被忽略;当传递的参数比需要的参数少的时候,没有的参数会被赋予undefined值。
arguments是函数实际传递的数组
function f(x,y,z){ if(arguments.length != 3){ throw new Error('f的参数不等于3'); } for(var i = 0;i<arguments.length;i++){ console.log(arguments[i]); } } f('a','b'); Uncaught Error: f的参数不等于3(…)
function f(x,y,z){
if(arguments.length != 3){
throw new Error('f的参数不等于3');
}
for(var i = 0;i<arguments.length;i++){
console.log(arguments[i]);
}
} f('a','b','c'); a b c
用函数处理一个对象
var o = {"x":"1","y":"2"}; function f(){ for(var i in this){ console.log(i);//i为属性名 if(i == "x"){this[i]+=3}//this[i]可以获得属性值 console.log(this[i]); } } f.call(o); x 13 y 2
用一个名字空间定义一个模块所有的函数,就是方法
var Class = {}; Class.methodA = function(pa){console.log(pa);}; Class.methodB = function(pb,pc){console.log(pb+pc);}; Class.methodA('12'); Class.methodB(3,5); 12 8
//给一个对象添加方法
var Class = {"x":"6","y":"7"}; Class.methodA = function(pa){console.log(pa);}; Class.methodB = function(pb,pc){console.log(pb+pc);}; Class.methodA('12'); Class.methodB(3,5); 128