※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都一樣
沒有留言:
張貼留言