题目一.a和b两个变量,不用第三个变量来切换两个变量值
var a=5; var b=6; a=a+b; b=a-b; a=a-b; alert(a); alert(b);
题目二.有一个数n=5,不用for循环,怎样返回[1,2,3,4,5]这样的数组
方法一.用递归来进行遍历
var n=5; function show(){ var arr=[]; return (function(){ arr.unshift(n); n--; if(n!=0){ arguments.callee(); } return arr; })(); } alert(show(n));
方法二.用正则来匹配模拟次数
var n=5; var arr=[]; arr.length=n+1; var arr2=[]; var str=arr.join("a"); 中间连接符用a,要六个数才五个逗号,所以length=n+1 var re=/a/g; str.replace(re,function(){ arr2.unshift(n--); }); alert(arr2);
题目三.一个数n,当n<100就返回n,否则返回100,但是不能用if else、三目、switch等
方法一.Math.min
var n=150; function show(){ return Math.min(n,100); } alert(show(n));
方法二.用数组排序
var n=50; function show(){ var arr=[n,100]; arr.sort(); return arr[0]; } alert(show(n));
方法三.根据数字转字符串后的长度判断,用到for循环,如果长度小于3,就返回自身,大于等于3就返回100
var n=150; function show(){ var str="n"; for(;str.length<3;){ return n; } for(;str.length>=3;){ return 100; } } alert(show(n));
方法四.json
var n=50; function show(){ var json={}; var m=n<100||json; //m是布尔值 for(var attr in m){ return 100; } return n; } alert(show(n));