js代码的一些小技巧

时间:2024-11-08 08:05:25

1. 数组中通过赋值语句来改变值

var a = 1;
var msg = ["value0","value1"];
for(var i = 0;i<10;i++){
alert(msg[a = a == 1 ? 0 : 1]);// 0,1,0,1…
}

能实现切换两个不同的值。  msg[a=1] 相当于 msg[1], a=1,同时执行赋值和取值

2.类型转换

一般把"123"转成number类型,都是parseInt("123");但是也可以这样:

var a= "123";//string 10
var a1 = parseInt(a,10);//number 10
var a2 = +a;//number 10
var a3 = a*1;//number 10 var a = 0;
alert(!!a);//强制转换为boolean

3. onclick和 href

 <a href="go.html" onclick="doSomething();"></a>

如果跳转之前做判断的话,传统的写法:

function doSomething(){
var res = confirm("u want go?");
if (res) {
window.location.href = "go.html";
};
}

dosomething返回的是false,则不会跳转页面,so we can achieve it like this:

function doSomething(){
return confirm("u want live?");
}

4.获取数组中最大最小值

通常,我们给Array做原型拓展,如下:

        if(typeof(Array.prototype['max']) == 'undefined'){
Array.prototype.max = function(){
var length = this.length;
if(length){
var max = this[0];
for(var i=0;i<length;i++){
if(this[i] > max){
max = this[i];
}
}
return max;
}else{
// 空数组
} }
} alert([2,3,19,223].max());//223

我们知道javascript原生的Math对象提供了比较大小的方法,

alert(Math.max(1,4,2,919,222));    //

同样的 ,我们知道apply方法可以改变this的值,并将参数与数组形式传递,所以可以巧妙的运用:

if(typeof(Array.prototype['max']) == 'undefined'){
Array.prototype.max = function(){
var length = this.length;
if(length){
return Math.max.apply({},this);
}else{
// 空数组
} }
}

或者

Array.prototype['max'] = Array.prototype['max'] || function(){
var length = this.length;
if(length){
var max = this[0];
for(var i=0;i<length;i++){
if(this[i] > max){
max = this[i];
}
}
return max;
}else{
// 空数组
}
}

5. javascript 检测对象类型

/* 检测对象类型
* @param: obj {JavaScript Object}
* @param: type {String} 以大写开头的 JS 类型名
* @return: {Boolean}
*/
function is(obj, type) {
return Object.prototype.toString.call(obj).slice(8, -1) === type;
}

  

is('sofish', 'String') // true
is(null, 'Null') // true
is(new Set(), 'Set') // true

6.正则表达式与replace方法

str.replace(/正则/,'替换的内容'|| function(match){/* todo */})

var source = '<tr><td>{$id}</td><td>{$name}</td></tr>';
console.log(source.replace(/{\$id}/g,'10'));
console.log(source.replace(/[<>&]/g,function(items){
switch(items){
case '<' :
return '<';
case '>' :
return '>';
}
}));

7.用js实现随机选取10–100之间的10个数字,存入一个数组,并排序