得到對象的全部屬性名 || 將對象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
怎樣自定義異常 || 怎樣拋出本身的異常 || 怎樣本身製做異常this
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從句都會被執行spa
判斷對象有沒有某個屬性code
if(o.x !== undefined){ 這是o有x屬性的狀況 }else{ 這是o沒有x屬性的狀況 }
函數的傳遞的參數多於須要的參數時,多餘的會被忽略;當傳遞的參數比須要的參數少的時候,沒有的參數會被賦予undefined值。對象
arguments是函數實際傳遞的數組blog
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
用函數處理一個對象io
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
用一個名字空間定義一個模塊全部的函數,就是方法console
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