获得对象的所有属性名 || 将对象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 = ;i<x;i++){
console.log(i+':'+i);
if(i == ){return;}
console.log('after return');
}
}; a();
:
after return
:
after return
:
after return
:
after return
:
after return
:
怎样自定义异常 || 怎样抛出自己的异常 || 怎样自己制作异常
function fa(x){
if(x<){throw new Error(x+'小于0');}//抛出异常时,后面的代码就不再执行了
console.log(x);
} fa(-); 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 != ){
throw new Error('f的参数不等于3');
}
for(var i = ;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":"","y":""};
function f(){
for(var i in this){
console.log(i);//i为属性名
if(i == "x"){this[i]+=}//this[i]可以获得属性值
console.log(this[i]); } } f.call(o); x y
用一个名字空间定义一个模块所有的函数,就是方法
var Class = {};
Class.methodA = function(pa){console.log(pa);};
Class.methodB = function(pb,pc){console.log(pb+pc);};
Class.methodA('');
Class.methodB(,);
//给一个对象添加方法
var Class = {"x":"","y":""};
Class.methodA = function(pa){console.log(pa);};
Class.methodB = function(pb,pc){console.log(pb+pc);};
Class.methodA('');
Class.methodB(,);