获得对象的所有属性名 || 将对象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

 

Copyright © 2024 上善其若水,厚德载物
Powered by .NET 8.0 on Kubernetes