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)); //919
同样的 ,我们知道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个数字,存入一个数组,并排序