变量转换
var myVar = "3.14159",str = ""+ myVar,// to stringint = ~~myVar, // to integerfloat = 1*myVar, // to floatbool = !!myVar, /* to boolean - any string with lengthand any number except 0 are true */array = [myVar]; // to array
但是转换日期(new Date(myVar))和正则表达式(new RegExp(myVar))必须使用构造函数,创建正则表达式的时候要使用/pattern/flags这样的简化形式。
取整同时转换成数值型
//字符型变量参与运算时,JS会自动将其转换为数值型(如果无法转化,变为NaN) '10.567890' | 0 //结果: 10 //JS里面的所有数值型都是双精度浮点数,因此,JS在进行位运算时,会首先将这些数字运算数转换为整数,然后再执行运算 //| 是二进制或, x|0 永远等于x;^为异或,同0异1,所以 x^0 还是永远等于x;至于~是按位取反,搞了两次以后值当然是一样的 '10.567890' ^ 0 //结果: 10 - 2.23456789 | 0 //结果: -2 ~~-2.23456789 //结果: -2
日期转数值
//JS本身时间的内部表示形式就是Unix时间戳,以毫秒为单位记录着当前距离1970年1月1日0点的时间单位 var d = +new Date(); //1295698416792
类数组对象转数组
var arr =[].slice.call(arguments)
下面的实例用的更绝
function test() { var res = ['item1', 'item2'] res = res.concat(Array.prototype.slice.call(arguments)) //方法1 Array.prototype.push.apply(res, arguments) //方法2}
进制之间的转换
(int).toString(16); // converts int to hex, eg 12 => "C"(int).toString(8); // converts int to octal, eg. 12 => "14"parseInt(string,16) // converts hex to int, eg. "FF" => 255parseInt(string,8) // converts octal to int, eg. "20" => 16
将一个数组插入另一个数组指定的位置
var a = [1,2,3,7,8,9];var b = [4,5,6];var insertIndex = 3;a.splice.apply(a, Array.prototype.concat(insertIndex, 0, b));
删除数组元素
var a = [1,2,3,4,5];a.splice(3,1); //a = [1,2,3,5]
大家也许会想为什么要用splice而不用delete,因为用delete将会在数组里留下一个空洞,而且后面的下标也并没有递减。
判断是否为IE
var ie = /*@cc_on !@*/false;
这样一句简单的话就可以判断是否为ie,太。。。
其实还有更多妙的方法,请看下面
// 貌似是最短的,利用IE不支持标准的ECMAscript中数组末逗号忽略的机制var ie = !-[1,];// 利用了IE的条件注释var ie = /*@cc_on!@*/false;// 还是条件注释var ie//@cc_on=1;// IE不支持垂直制表符var ie = '/v'=='v';// 原理同上var ie = !+"/v1";
新闻热点
疑难解答
图片精选