js知识点
工作中遇到的一些js知识点:
1.判断一个变量是否已经定义
if (typeof (rechargestartdate) == "undefined") { rechargestartdate = $("#recharge_startdate").val(); alert("此变量没有定义"); }
2.定义变量时如果没有写var,那么这个变量就变成了全局变量
rechargestartdate = $("#recharge_startdate").val();
3.一个函数做另一个函数的参数,不过做另一个函数的参数时要把这个函数的参数值带上
//函数作为另一个函数的参数 function test1(Func) { Func(mydata); } function test3(data) { alert(data); } window.onload = function () { test1(test3("zhangran")); }
4.使用函数的返回值时,定义的新变量名称不能和函数的函数名称一样,如果一样的话,调用函数会失败
var Test = Test(); //失败,出现错误 function Test(){ ....... return value; }
5.使用for...in遍历数组可以非常容易得到所有的数组值,但是用for...in遍历Object不能得到数值
var newarray = new Array("123", "234", "245"); for (var i in newarray) { alert(newarray[i]); // i = "0"或者 i="1".... 在数组里i是字符串,但是也能取到值, }
for (var property in navigator) { var str = "navigator" + "." + property; //在Object里property是字符串,但是navigator.property是undefined,
document.write(property + " <em>" + str + "</em><br/>"); //显示结果是appName navigator.appName ......而不是appName opera类似的结果
}
6.
<script> function makeCookie(form){ var when = new Date(); when.setTime(when.getTime() + 24*60*60*1000); when.setFullYear(when.getFullYear() + 1);
//var yname = document.form.yourname.value; 这样写会出错....,此form是函数的形参,不是表单的name
var yname = form.yourname.value;
//var yname = document.getElementById("yourname").value; //var ycolor = document.getElementById("yourcolor").value; var ycolor = form.yourcolor.value; var str = "visitor=" + yname + ";expires=" + when.toGMTString(); var colorstr = "color=" + ycolor + ";expires=" + when.toGMTString(); //document.cookie = escape(str); //document.cookie = escape(colorstr); document.cookie = encodeURI("visitor") + "=" + encodeURI(yname) + ";expires=" + when.toGMTString(); alert(document.cookie);// 没有cookie ,why? } function welcome(form){ you = form.yourname.name; var position = document.cookie.indexOf("visitor="); if(position != -1){ var begin = position + 8; var end = document.cookie.indexOf(";",begin); if(end == -1){end = document.cookie.length;} you = decodeURI(document.cookie.substring(begin, end)); alert("welcome"+ you); }else{alert("no cookies");} } </script> <body onload="document.form1.reset()"> <form name="form1" > your name:<br/> <input type="text" name="yourname" id="yourname"/><br/> your color:<br/> <input type="text" name="yourcolor" id="yourcolor"/> <br/> <input type="button" value="make cookie" onclick="makeCookie(this.form)"/> <input type="button" value="get cookie" onclick="welcome(this.form)"/> </form>
7. 全局变量和局部变量
对于全局变量和局部变量的作用域我很明白,但有时对某个变量是全局变量和局部变量会很糊涂,弄不明白。经过几个测试,基本明白了,如果有错的地方,还请指教。
$(document).ready(function () { var t = true;//变量t对于ready的匿名函数而言是局部变量,但是它声明在函数scroll()外,那相对于scroll(){}t是全局变量,在scroll里t的值可以被使用、改变
function scroll(){
t =!t;
f="123";//在函数里定义变量时不写var,那么这个变量就是一个全局变量了
}
});