var typeOf = function (o){
var s = Object.prototype.toString.call(o);
return s.match(/\[object (.*?)\]/)[1].toLowerCase();
};
typeOf({}); // "object"
typeOf([]); // "array"
typeOf(5); // "number"
typeOf(null); // "null"
typeOf(); // "undefined"
typeOf(/abcd/); // "regex"
typeOf(new Date()); // "date"
Javascript 忍者
javascript typeOf 進階設計
寫出一個比typeof運算符更準確的類型判斷函數
javascript in 特殊用法
// 判斷是否元素在陣列內
1 in [1,2,3]; // true
// 判斷屬性
var o = {p:1};
'p' in o; // true
'toString' in o; // true 隱含繼承 toString 方法
// 使用對象的hasOwnProperty方法判斷一下,是否為對象自身的屬性
var obj = {};
if ('toString' in obj) {
console.log(obj.hasOwnProperty('toString')); // false
}
javascirpt if 邏輯判斷式內為物件時是 true 還 false ?
空字串轉為 false, 但是 new String 仍為對象所以為 true, 空數組跟空對象都是 true
if('')console.log('pass');
if(new String(''))console.log('pass'); // pass
if([])console.log('pass'); // pass
if({})console.log('pass'); // pass
javascript 如何區分 array 和 object ?
下面代碼中,數組([])的類型也是 object 。而 instanceof 運算符可以區分數組和對象
typeof {} // "object"
typeof [] // "object"
var o = {};
var a = [];
o instanceof Array // false
a instanceof Array // true
// 判斷是否為array另一方式
Array.isArray([]); // true
javascript 如何跳出多層迴圈?
滿足條件時,直接跳出雙層循環。如果break語句後面不使用標籤,則只能跳出內層循環,進入下一次的外層循環。
top:
for (var i = 0; i < 3; i++){
for (var j = 0; j < 3; j++){
if (i === 1 && j === 1) break top;
console.log('i=' + i + ', j=' + j);
}
}
訂閱:
文章 (Atom)
javascript typeOf 進階設計
寫出一個比typeof運算符更準確的類型判斷函數 var typeOf = function (o){ var s = Object.prototype.toString.call(o); return s.match(/\[object (.*?)\]/)[1]....
-
字串後方補上反斜線就可以在下一行書寫程式碼 var s="hello \ world \ !";
-
// 判斷是否元素在陣列內 1 in [1,2,3]; // true // 判斷屬性 var o = {p:1}; 'p' in o; // true 'toString' in o; // true 隱含繼承 toString 方法 //...
-
下面代碼中,數組([])的類型也是 object 。而 instanceof 運算符可以區分數組和對象 typeof {} // "object" typeof [] // "object" var o = {}; var a = []...