1.
RegExp对象的方法:
text ( ) : 用来检测一个字符串是否匹配某个整个表达式,如果匹配成功则返回true,否则false
exec( ) : 用来检索字符串中与正则表达式匹配的值。返回一个数组,其中存放匹配结果,如果没有匹配则返回null;
compile( ) : 在脚本执行过程中编译正则表达式,也可以改变已有表达式;(已经从web标准中删除)
注意:match()是字符串的方法,用来验证正则表达式,结果存放在数组中
例如:
var patt=new RegExp(/\d+/g)
patt.text("1 plus 2 equal 3 ") //true
var patt=new RegExp(/\d+/g)
patt.exec("1 plus 2 equal 3 ") //["1"]
var str="1 plus 2 equal 3"
str.match(/\d+/g) // ["1","2","3"]
2.
主流模块化包含CommonJS,AMD,CMD等;RequireJS遵循AMD规范,SeaJS遵循CMD规范;前者推崇依赖前置,后者推崇依赖就近;
3.
<div style="width:400px;height:200px;">
<span style="float:left;width:auto;height:100%;">
<i style="position:absolute;float:left;width:100px;height:50px;"> hello</i>
<span>
</div>
span标签的宽和高分别是0px和200px;
知识点:
a. span标签是无法设置宽高的
b. float会把浮动元素变成块级元素
c. 绝对定位脱离了文档流
span元素为float,用有了宽和高的属性,继承父元素的高度为200px,而其宽度为auto,子元素脱离了文档流,所以为0px ;(如果这里把<i>的position去掉则可以得到宽度,为100px)
4.
a已经提前声明及定义
console.log("value is "+(a!=0)?"define":"undefine") //define
考点为运算符的优先级
+号的优先级大于三目运算符,所以这里的比较其实是"value is "+(a!=0) 这个默认就是true
5.
call方法和apply方法的作用相同,第一个参数就是执行上下文的对象,第二个参数call是将其他参数依次填入,apply是填入包含参数的数组.
6.
编写函数obj代码使得
var a=obj("name1");
var b=new obj;
a.name="name1";
b.name="name2";
function obj(name)
{
if(name)
{
var NewObj={};
NewObj.name=name;
return NewObj;
}
}
obj.prototype.name="name2";
7.
(function(){
var a=b=5;
})( );
console.log (a);
console.log (b);
答案是5,ReferenceError
由于匿名函数调用后会被销毁,而且a为局部变量,b是全局变量,所以b存在,a被销毁了
8.
绝大部分值在转换为布尔类型时都为true,但是以下6种情况会为false
""(空串)
null
undefined
0
NaN
false
9.
数字类型中需要注意的几个方面:
a.八进制的数字在开头加一个0,十六进制的数字在开头加0x
b.指数表示法1e+1表示10 1e+2表示100,后面+的数字表示在其后面加的0的个数
c.在js中有一种Infinity的特殊值,它所表示的是超出了js处理范围的数值;不过它的类型还是为数字类型Infinity表示最大数,-Infinity表示最小值;Infinity/-Infinity与任何一个确定的数字进行算术运算的时候结果都为Infinity/-Infinity;但是如果是Infinity与其本身做运算则得NaN;
d.Nan也是一种特殊的数字,也属于数字类型;表示一种失败的运算:例如var a=10* "f" ,则a等于NaN ;NaN有传染性,只有算术运算中存在一个NaN,则整个结果也为NaN; 例如:1+2+NaN 则为NaN;
10.
var x= new Boolean(false);
if (x){
alert("hi");
}
因为new Boolean返回的是对象;如果要使其不谈出来,则var x=Boolean(false);
11.
function Foo(){
var i=0;
return function(){
console.log(i++);
}
}
var f1=Foo();
var f2=Foo();
f1();//0
f1();//1
f2();//0