javascript
JS篇 学习笔记
?
ECMA Script API:
Array.prototype.splice(start, deleteCount, value ...)
數組操作中有:push、pop、unshift左移入、shift左進出;splice不僅可以完成刪除操作,而且還可以從中間插入:當deleteCount參數為0時就可以將后面的多個參數添加進來;
?
正則表達式中,匹配分為兩類:
1) 匹配字符
如:\s, \d, \w等
2) 匹配位置
如:\b,^, $, (?=...), (?!...)
這類往往用于斷言:如果匹配的話,則要滿足這樣的規則,匹配的指針不會向前進或者后退。如:/\w(?=\d)/g表示匹配字母后跟隨一個數字的子串。
// 斷言:匹配字母下一位是非1的數字;"a1b2cd3ef".match(/[a-zA-Z](?=\d)(?!1)/g) // ["b", "d"]
// 矛盾了:要求匹配項的以數字開頭,還的是:[a-zA-Z]
"a1b2cd3ef".match(/(?=\d)[a-zA-Z]/g) // null
// 將數字串,轉換為每3位用逗號分隔的國際化表示
"0123456789".replace(/\d{1,3}(?=(\d{3})+$)/g, "$&,") // "0,123,456,789"
?
String.prototype.match(regexp)
分兩類情況:
1) 正則含有g選項,如果不匹配返回null,否則返回所有匹配的字符串。(不包括Group匹配子串)
2) 正則不含有g選項,如果不匹配返回null,否則返回一個數組,元素0為匹配的字符串片段,后面的元素為匹配的Group子串。該數組含有兩個屬性:index代表匹配的位置,input代表被匹配的字符串本身。
?
String.prototype.replace(string or?regexp, replacement)
如果是字符串,則不轉換為正則;如果是正則,則replacement可以是以下:
1) 字符串:其中的$代表特殊含義:$1, $2, ...代表多個Group匹配子串, $&代表匹配的整串,$`代表匹配左側、$'代表匹配右側;
// 因為/\d/匹配了a1b,所以1被a1b替換"a1b".replace(/\d/, "$`$'") // "aabb"
// 此時/\d/匹配a1b
"a1b".replace(/\d/, "$`-$'") // "aa-bb"
2) 函數:參數如下:參數0為匹配的整串,然后為Group子串,然后為Group子串的位置index,最后為被匹配的字符串。
?
?
即時編譯的幾種方式:
1. eval(' ... ')
2. new Function(' ... ')
3. setTimeout(' ... ', 0) // 不推薦
4. <script type='text/javascript'> ... </script> // 通過JS創建script節點,append到head節點中
/* eval: 1. 在當前的function context中執行,可以修改值; 2. 字符串中的最后一句表達式可以作為eval的返回值; 3. 返回值如果不是簡單類型,需要用"(...)"小括號圍繞起來; */ (function(){var o1 = eval('var s1 = "test"; ({ a1: s1 }) ');console.log(o1, s1); })(); /* new Function(): 1. 執行時將全局作用域作為function context; */ var a1 = "outer";(function(){var a1 = 'test';var f1 = new Function('console.log(this === window);'); // truevar f2 = new Function('return a1;'); // a1 is not defined console.log(f1(), f2()); })();
?
轉載于:https://www.cnblogs.com/diydyq/p/4277500.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: android studio no ma
- 下一篇: CentOS升级Python2.7及安装