※globalEval、eval 的差異
和javascript的eval很像,但是全域的$(function(){
test();
});
function test(){
$.globalEval('var xxx = 2;');
eval('var ooo = 3;');
console.log('init xxx=' + xxx);
console.log('init ooo=' + ooo);
}
function after(){
console.log('after xxx=' + xxx);
// console.log('after ooo=' + ooo); // 執行時錯誤
}
----------
<input type="button" value="click me" onclick="after()" />
※註解那行打開會發生錯誤,因為並不是全域的
※makeArray
故名思義,就是用來產生陣列的$(function(){
var arr = $.makeArray($('span'));
// alert(arr[0].childNodes[0].data);
// debugger;
$.each(arr, function(i, v){
console.log('v=' + v.childNodes[0].data); // s1-->s2
});
});
----------
<span>s1</span>
<div>d1</div>
<span>s2</span>
<div>d2</div>
※makeArray 使用多層時
$(function(){
$.each($.makeArray($('li')).reverse(), function(i, v){
console.log('v=' + v.childNodes[0].data); // s1-->s2
});
});
----------
<ul>
U1
<li>L1</li>
<li>L2</li>
<li>
L3
<ul>
U2
<li>L4</li>
<li>L5</li>
</ul>
</li>
</ul>
※結果如以下畫面
※會發現L3前後都空很大,這是因為HTML有換行的關係,改成以下就不會了
<ul> U1 <li>L1</li> <li>L2</li> <li>L3<ul> U2 <li>L4</li> <li>L5</li> </ul> </li> </ul>
※inArray、indexOf 的差異
var str = "abc cba array abc cba";
console.log($.inArray("b", str)); // 1
console.log($.inArray("b", str, 5)); // 5
console.log($.inArray("b", str, -8)); // 15
console.log($.inArray("x", str)); // -1
console.log(str.indexOf('b')); // 1
console.log(str.indexOf('b', 5)); // 5
console.log(str.indexOf('b', -8)); // 1
console.log(str.indexOf('x')); // -1
console.log($.inArray("ab", str)); // -1
console.log($.inArray("ab", str, 5)); // -1
console.log($.inArray("ab", str, -8)); // -1
console.log(str.indexOf('ab')); // 0
console.log(str.indexOf('ab', 5)); // 14
console.log(str.indexOf('ab', -8)); // 0
console.log($.inArray("abc", str)); // -1
console.log($.inArray("abc", str, 5)); // -1
console.log($.inArray("abc", str, -8)); // -1
console.log(str.indexOf('abc')); // 0
console.log(str.indexOf('abc', 5)); // 14
console.log(str.indexOf('abc', -8)); // 0
console.log($.inArray("John", [ 4, "Pete", 8, "John" ])); // 3
console.log($.inArray("Joh", [ 4, "Pete", 8, "John" ])); // -1
console.log([ 4, "Pete", 8, "John" ].indexOf("John")); // 3
console.log([ 4, "Pete", 8, "John" ].indexOf("Joh")); // -1
※inArray可以有第三個參數,沒有寫預設是0,表示從第一個字開始找
※用在搜尋字串且找一個字時:相同的地方是
使用正數時,還有找不到時都是-1,只有負數不同
※搜尋兩個字或一個單字時,inArray都是-1,也就是不支援;但indexOf有支援
※搜尋陣列時,inArray和indexOf都一樣

沒有留言:
張貼留言