本章没有深奥的讲解js一些底层原理,比如this指针、作用域、原型啦,涉及的都是一些有利于平时开发时简化代码,提高执行效率,或者说可以当做一种经验方法来使用,篇幅都不长,小步快跑的让你阅读完整篇文章,体验编程的快乐。 获取两个区间之内随机数 复制代码 代码如下: function getRandomNum(Min, Max){ // 获取两个区间之内随机数 // @逆火狂飙 提出有可能第一个参数大于第二个参数,所以增加一下判断更可靠 if (Min > Max) Max = [Min, Min = Max][0]; // 快速交换两个变量值
var Range = Max - Min + 1; var Rand = Math.random(); return Min + Math.floor(Rand * Range); };
随机返回一个 正/负参数 复制代码 代码如下: function getRandomXY(num){ // 随机返回一个 正/负参数 num = new Number(num); if (Math.random() <= 0.5) num = -num; return num; }
setInterval()或setTimeOut()计时器函数传参 复制代码 代码如下: var s = "我是参数"; function fn(args) { console.log(args); } var a = setInterval(fn(s),100); // xxxxxx错误xxxxx var b = setInterval(function(){ // 正确,用匿名函数调用被计时函数 fn(s); }, 100);
setInterval()或setTimeOut()计时器递归调用 复制代码 代码如下: var s = true; function fn2(a, b){ // 步骤三 if (s) { clearInterval(a); clearInterval(b); } }; function fn(a){ // 步骤二 var b = setInterval(function(){ fn2(a, b) // 传入两个计时器 }, 200) }; var a = setInterval(function(){ // 步骤一 fn(a); // b代表计时器本身,可座位参数传递 }, 100);
字符串转换为数字 复制代码 代码如下: // 无需 new Number(String) 也无需 Number(String) 只需字符串减去零即可 var str = "100"; // str: String var num = str - 0;// num: Number
闭包偏见 复制代码 代码如下: /** * 闭包:任何一个js方法体都可以称为一个闭包,并非什么只有内嵌函数来引用了外部函数的某个参数或属性才会发生。 * 它有一个独立作用域,在该作用域内可存在若干的子作用域(就是方法嵌套方法),最终该闭包作用域为最外层方法的作用域 * 它包含了本身方法参数和所有内嵌函数的方法参数,所以当一个内嵌函数在外部有引用时,该引用的作用域为引用函数所在的(顶级)方法作用域 */ function a(x) { function b(){ alert(x); // 引用外部函数参数 } return b; } var run = a("run..."); // 由于作用域的扩大,可以引用到外部函数a的变量并显示 run(); // alert(): run..
获取地址参数字符串和定时刷新 复制代码 代码如下: // 获取问号?后面的内容,包括问号 var x = window.location.search // 获取警号#后面的内容,包括#号 var y = window.location.hash // 配合定时器可实现网页自动刷新 window.location.reload();
函数、对象 is 数组? 复制代码 代码如下: var anObject = {}; //一个对象 anObject.aProperty = “Property of object”; //对象的一个属性 anObject.aMethod = function(){alert(“Method of object”)}; //对象的一个方法 //主要看下面: alert(anObject[“aProperty”]); //可以将对象当数组以属性名作为下标来访问属性 anObject[“aMethod”](); //可以将对象当数组以方法名作为下标来调用方法 for( var s in anObject) //遍历对象的所有属性和方法进行迭代化处理 alert(s + ” is a ” + typeof(anObject[s])); // 同样对于function类型的对象也是一样: var aFunction = function() {}; //一个函数 aFunction.aProperty = “Property of function”; //函数的一个属性 aFunction.aMethod = function(){alert(“Method of function”)}; //函数的一个方法 //主要看下面: alert(aFunction[“aProperty”]); //可以将函数当数组以属性名作为下标来访问属性 aFunction[“aMethod”](); //可以将函数当数组以方法名作为下标来调用方法 for( var s in aFunction) //遍历函数的所有属性和方法进行迭代化处理 alert(s + ” is a ” + typeof(aFunction[s]));