//关于三个修饰符//i:忽略大小写,m:支持多行模式,g:全局搜索(没g搜出一个就罢工了)var testreg3 = /^java$/img;"Java\nis fun\nJAVA".match(testreg3) // => ["Java", "JAVA"]//其中 "^" 只搜在行首的,"$"只搜在行末的page 263:
//在不适用g修饰符下,()的作用就来了var urlReg = /(\w+):\/\/([\w.]+)\/(\S*)/;var text = "Visit my blog at http://www.example.com/~david"result = text.match(urlReg) // => ["http://www.example.com/~david", "http", "www.example.com", "~david"]//result[1]就指的是第一个圆括号括起来的内容,以此类推page 264:
//当有需求正则不能写死的时候,需要用到RegExp()构造函数var zipcode = new RegExp("\\d{5}", "g"); // 注意是\\page 265:
//regexp的exec方法,注意看lastIndex的变化,当遍历完了之后,lastIndex自动置为零//当然,regexp还有test方法。这个很熟了var pattern = /Java/g;var text = "JavaScript is more fun than Java!";var result;while((result = pattern.exec(text)) != null){ alert("Matched '" + result[0] + "'" + " at position " + result.index + "; next search begins at " + pattern.lastIndex); con sole.log(result)}con sole.log(pattern.lastIndex)page 272:
//con st关键字用来定义常量,即不可重复赋值的变量//如:con st pi = 3.14;pi =4 || con st pi = 4 || var pi = 4 //这都是错的,常量不可重复赋值page 273:
//let关键字,只能在就近的括号内var o = {x:1, y:2};for(let p in o) con sole.log(p);for each(let v in o) con sole.log(v); //不推荐使用for each,它只能拿到值,而且存在严重的浏览器兼容问题con sole.log(p) //引用错误,p没定义page 275:
//解构赋值,一个强大的功能,let,var 声明的都可以用function polar(x,y){ return [Math.sqrt(x*x+y*y), Math.atan2(y,x)];}function cartesian(r,theta){ return [r*Math.cos(theta), r*Math.sin(theta)];}let [r,theta] = polar(1.0, 1.0);let [x,y] = cartesian(r,theta);//还可以写“链式”的解构赋值:let first, second, all;all = [first, second] = [1,2,3,4]; // first=1, second=2, all=[1,2,3,4]page 279:
//关于迭代器var o = {x:1, y:2, z:3};con sole.log(Iterator(o).next())con sole.log(Iterator(o).next()) // => 两次拿到的都是 ["x", 1]//目前不知道Iterator().next()怎么用//指南中推荐我们的遍历方法是用for/in:for(let [k,v] in Iterator({a:1, b:2})) con sole.log(k + "=" + v); // => a=1, b=2//Iterator()函数返回的迭代器的俩重要性质://1.忽略继承的属性//2.有可选参数true,当传true时,只对属性名进行遍历而忽略属性值var o = {x:1, y:2, z:3};Object.prototype.s = "ss";for(p in o) con sole.log(p); // => x,y,z,sfor(p in Iterator(o)) con sole.log(p); // => ["x",1], ["y",2], ["z",3]for(p in Iterator(o,true)) con sole.log(p); // => x,y,z