Array.prototype.distinct=function(){
var ret=[];
for(var i=0;i<this.length;i++){
for(var j=i+1;j<this.length;){
if(this[i]===this[j]){
ret.push(this.splice(j,1)[0]);
}else{
j++;
}
}
}
return ret;
}
//for test
alert(['a','b','c','d','b','a','e'].distinct());
var arr = new Array();
var boxs = document.getElementsByTagName("input");
for(var index in boxs) {
if(boxs[index].type == "checkbox"){
arr.push(boxs[index]);
}
}
return arr;
box.onclick = function(){}
box.addEventListener("click",function(){},false);
function xxx(){}
<button onclick="xxx()"></button>
1 var a = null;
2 alert(typeof a); //object
所有对象的默认值都是null
var foo = "11"+2-"1";
console.log(foo);
console.log(typeof foo);
如果操作数中含有字符串,那么就要应用如下规则:
1)如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来;
2)如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后再将两个字符串拼接起来。
如果有一操作数为对象,数字或者布尔值,则调用它们的toString()方法取得相应的字符串的值,然后再应用前面关于字符串的规则。对于Undefined和null,则分别调用String()方法并取得字符串”undefined”和“null”。
如果操作符中含有字符串,那么就要应用如下规则:
如果有一个操作符是字符串,布尔值,null或者undefined,则先在后台调用Number()函数将其转换为数值,然后再执行数和数字之间的减法运算。如果转换的结果为NaN,那么得到的结果就是NaN。
tips:Number()函数的转换规则中:如果是null值,则返回0;如果是undefined,则返回NaN.
var foo = "11"+2;
console.log(foo);//112
console.log(typeof foo);//string
var foo = "11"+2-"1";
console.log(foo);//111
console.log(typeof foo);//number
所以,在上述例子中。“11”+2,执行的是将数字2转换成字符串再与“11”拼接,最后的结果为“112”,string类型;“112”-“1”,分别将“112”和“1”转换成数字,相减,结果为111,number类型。
var foo = 1;
(function(){
console.log(foo);
foo = 2;
console.log(foo);
})();
var foo=1;
function bar() {
//javascript没有块级作用域, 在一个函数内任何地方声明的var都会被提到函数的最开头
//相当于这里有一个 var foo;
console.log(foo); //undefined, 因为函数内的var foo把外头的给覆盖了
if (!foo) {
var foo = 10; //相当于foo = 10; var foo的声明被提到最前
}
console.log(foo);
}
bar();
String.prototype.trim = function(){
return this.replace(/^\s+/,"").replace(/\s+$/,"");
}
1 :
var fun = function(){
this.name = 'peter';
return {
name: 'jack'
};
}
var p = new fun();
2:
var fun = function(){
this.name = 'peter';
return 'jack';
}
var p = new fun();
1.jack
2.undefined