问题一
场景描述:百度和天猫的搜索提示框的出现,例如你输入n 提示牛仔裤 输入new 提示 new balance,
这样其实都是通过Ajax 来实现的,但是Ajax作为异步的方式,如何来判断输入 n 他返回的是牛仔裤 而不是new balance 呢
下面是我自己的想法,,通过全局变量和局部变量做一个对比
<input type="text" > <div id="storeData"></div> <script> $(function(){ $("#storeData").data("max",0); $("input").on("keyup",function(){ var keyWord = $(this).val(); var tempMax = setGetMax (); $.ajax({ url:'', success:function(data){ var max = $("#storeData").data("max"); if(max == tempMax){ //证明后续没有输入新的值 } } }) }); var setGetMax = function(){ var max = $("#storeData").data("max") + 1; $("#storeData").data("max",max); return max ; } }) </script>
问题二
关于递归arguments.callee(args);
function factorial(num){ if(num <= 1 ){ return 1 ; }else{ return num * factorial(num - 1 ); } } //写法会报错 //example var anotherFun = factorial; factorial = null ; alert(another(4)); //讲factorial 设为null 则 原始函数的引用只剩下 anotherFun //当执行到 num * factorial(num - 1 ) 由于factorial为null 所以报错 //一个比较好的实现办法是 // arguments.callee 是一个指向正在执行的函数的指针 function factorial(num){ if(num <= 1 ){ return 1 ; }else{ return num * arguments.callee(num - 1 ); } }
问题三
<input flag="CREATE_TIME"> <script> $(function(){ $("input[flag='CREATE_TIME']") //等价于 $("input[flag=CREATE_TIME]") }) </script>
问题四
函数申明和函数表达式
var sayHi = function(){
alert("hi");
};
sayHi();
//上面写法是正确的
sayHi();
var sayHi = function(){
};
//但是 这样就会报错
//如果将函数定义成
function sayHi(){ }
//这样就可以随便引用