- 求值:
var n1 = 10;
var n2 = 5;
var r = n1+++n2;
console.log(n1, n2, r); // => 11, 5, 15
- 求值:
var s = 'Hello world';
console.log(s.substring(1, 4), s.substr(1, 4)); // => ell, ello
- 求值:
(function(x) {
delete x;
return x;
}(1)); // => 1
- 求值:
12['toString']['length']; // => 1
- 求值:
var d1 = new Date(2010, 3, 31);
var d2 = new Date(2010, 3, 0);
console.log(d1.getDate(), d2.getDate()); // => 1, 31
- 求值:
function fn(x, y) {
x = 1;
console.log(arguments[0], arguments[1]);
};
fn(); // => undefined
- 求值:
var x = 10;
var foo = {
x: 15,
bar: function() {
var x = 20;
return this.x;
}
};
console.log(foo.bar()); // => 15
console.log((foo.bar)()); // => 15
console.log((foo.bar = foo.bar)()); // => 10
console.log((foo.bar, foo.bar)()); // => 10
- 求值:
var b = 10;
var b = (
10,
function(x) {return x + 10;},
function() {return arguments[0];}
);
a = b + c
({x: 10}).x;
// => 20
- 求值:
var a = (1,5 - 2) * 2; // => 6
- 求值:
function x() {};
var x;
console.log(x); // => function x() {}
function y() {};
var y = 1;
console.log(y); // => 1
- 求值:
function a() {console.log(this);}; // => window
a.call(null);
- 求值:
alert(undefined == null); // true
alert(undefined === null); // false
alert(null === null); // true
- 求值:
typeof typeof(null); // => string
- 求值:
if(!('x' in window)) {var x = 1;};
alert(x); // => undefined
- 求值:
var s = [1,2,3,5,4];
alert(s.slice(-3, -1)); // => [3,5]
- 求值:
var o = {1: 1, 2: 2};
console.log(o['1']); // chrome? 1 firefox? 1 ie6? 语法错误
- 求值:
var o = {
x: 10,
valueOf: function() {
return this.x + 2;
},
toString: function() {
return this.x.toString();
}
};
var r = o < '11';
alert(o); // => 10
alert(o < '11'); // => false
- 求值:
var x = 1;
var o = {
x: 2,
run: function() {
var x = 3;
setTimeout(function() {
alert(this.x);
}, 100);
}
};
o.run(); // => 1
创建一个跨浏览器的XHR对象
function createXhr() {
return window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest();
};
实现DOM事件的绑定、解绑,跨浏览器+正确处理this
的指向
function on(el, type, fn) {
if(el.addEventListener) {
el.addEventListener(type, fn, false);
return true;
}
if(el.attachEvent) {
el['_e' + type + fn.name] = fn;
el[type + fn.name] = function() {
el['_e' + type + fn.name](window.event);
};
el.attachEvent('on' + type, el[type + fn.name]);
return true;
}
return false;
};
function off(el, type, fn) {
if(el.removeEventListener) {
el.removeEventListener(type, fn, false);
return true;
}
if(el.detachEvent) {
el.detachEvent('on' + type, el[type + fn.name]);
el['_e' + type + fn.name] = null;
el[type + fn.name] = null;
return true;
}
return false;
};
常用的web性能优化有哪些?
Gzip压缩文件、web缓存、避免css表达式、减少cookie、CSS Sprite、CDN加速、开启长连接
js跨域的方法,举出至少4种。
server proxy,jsonp、iframe、window.name、postMessage