Javascript绝句欣赏
1. 取整同时转成数值型:
'10.567890'|0
结果: 10
'10.567890'^0
结果: 10
-2.23456789|0
结果: -2
~~-2.23456789
结果: -2
2. 日期转数值:
var d = +new Date(); //1295698416792
3. 类数组对象转数组:
var arr = [].slice.call(arguments)
4. 漂亮的随机码:
Math.random().toString(16).substring(2); //14位
Math.random().toString(36).substring(2); //11位
5. 合并数组:
var a = [1,2,3];
var b = [4,5,6];
Array.prototype.push.apply(a, b);
uneval(a); //[1,2,3,4,5,6]
6. 用0补全位数:
function prefixInteger(num, length) {
return (num / Math.pow(10, length)).toFixed(length).substr(2);
}
7. 交换值:
a= [b, b=a][0];
8. 将一个数组插入另一个数组的指定位置:
var a = [1,2,3,7,8,9];
var b = [4,5,6];
var insertIndex = 3;
a.splice.apply(a, Array.concat(insertIndex, 0, b));
// a: 1,2,3,4,5,6,7,8,9
9. 删除数组元素:
var a = [1,2,3,4,5];
a.splice(3,1);
10. 快速取数组最大和最小值
Math.max.apply(Math, [1,2,3]) //3
Math.min.apply(Math, [1,2,3]) //1
(出自http://ejohn.org/blog/fast-javascript-maxmin/)
11. 条件判断:
var a = b && 1;
相当于
if (b) {
a = 1
}
var a = b || 1;
相当于
if (b) {
a = b;
} else {
a = 1;
}
12. 判断IE:
var ie = /*@cc_on !@*/false;
还有吗?欢迎回应
'10.567890'|0
结果: 10
'10.567890'^0
结果: 10
-2.23456789|0
结果: -2
~~-2.23456789
结果: -2
2. 日期转数值:
var d = +new Date(); //1295698416792
3. 类数组对象转数组:
var arr = [].slice.call(arguments)
4. 漂亮的随机码:
Math.random().toString(16).substring(2); //14位
Math.random().toString(36).substring(2); //11位
5. 合并数组:
var a = [1,2,3];
var b = [4,5,6];
Array.prototype.push.apply(a, b);
uneval(a); //[1,2,3,4,5,6]
6. 用0补全位数:
function prefixInteger(num, length) {
return (num / Math.pow(10, length)).toFixed(length).substr(2);
}
7. 交换值:
a= [b, b=a][0];
8. 将一个数组插入另一个数组的指定位置:
var a = [1,2,3,7,8,9];
var b = [4,5,6];
var insertIndex = 3;
a.splice.apply(a, Array.concat(insertIndex, 0, b));
// a: 1,2,3,4,5,6,7,8,9
9. 删除数组元素:
var a = [1,2,3,4,5];
a.splice(3,1);
10. 快速取数组最大和最小值
Math.max.apply(Math, [1,2,3]) //3
Math.min.apply(Math, [1,2,3]) //1
(出自http://ejohn.org/blog/fast-javascript-maxmin/)
11. 条件判断:
var a = b && 1;
相当于
if (b) {
a = 1
}
var a = b || 1;
相当于
if (b) {
a = b;
} else {
a = 1;
}
12. 判断IE:
var ie = /*@cc_on !@*/false;
还有吗?欢迎回应
( function(){ } )();
->
( function(){}() );
->
+function(){}()
-function(){}()
先M
M
最短的IE侦测好像是:!-'\v1'
有一个古老的神帖:
http://sla.ckers.org/forum/read.php?2,15812,page=1
M
'0x' + Number( 15 ).toString( 16 );
parseInt( String( '8f3a5' ), 16 );
String.prototype.format = function(){
var pattern = /\{\d+\}/g;
var args = arguments;
return this.replace(pattern, function(capture){
return args[capture.match(/\d+/)];
}
);
}
alert('hello, {0}'.format('.........'));
第七个,js和flash的as不同么?为何我的输出结果不对?
var a:Number = 0;
var b:Number = 1;
trace ("a:" + a + " b:" + b);
a = [b, b = a][0];
trace ("a:" + a + " b:" + b);
////////////////////////////////////////
a:0 b:1
a:0 b:0
mark&推
求详解啊!
最简洁短小的 JavaScript 判定 IE 浏览器
var ie = !-[1,];
http://www.cnblogs.com/lyz8/archive/2010/03/21/1691123.html
奇巧淫技
m
必须M
Mark
绝啊,绝,五体投地了!
if(-[1,])alert('这货不是ie')
Math.max(1,2,3,1,4,6,2)
mark,哈哈
如果要使用,那最好加上注释,可维护性好。
mark
好赞
表示压力很大。。。。。。。。。。
尼玛~各种坑爹
11条有误.
var a = b && 1;
应相当于
if (b)a=1;
else a=b;
mark
~ 是什么
mark~~
M之
这里的想法真的不错,但是一些没有注意细节,放了这么天没有人发现?比如第七条:两个值是交换了,但是你新生成的数组元素没有用delete进行垃圾回收?可能你说我鸡蛋里挑骨头,但是看看第8条,Array.concat明明是少了一个prototype,写js都知道加不加原型差了十万八千里,设计模式里有讲,再看看第10条,怎么长成这个怪样子Math.max.apply(Math, [1,2,3]) ,请问第一个参数Math有什么用,放在这里,有些画蛇添足了?如果没有上下文的话可以让第一个是null,相当于Math.max(1,2,3),我没有哗众取宠,只讲了事实,希望楼主好好的再看看这些代码?本人研二,正在找实习单位,望楼主推荐
请问第七条的数组元素怎么通过delete进行垃圾回收呢?
> 我来回应