js基础学习(一)
<script type="text/javascript"> //用(function(){xxx})()是利用匿名函数和闭包用来执行xxx里面的代码,同时所有的定义比如变量的作用域都在闭包里,不会污染到外部命名空间。 //1. 使这段代码被载入时候自动执行。 //2. 避免污染全局变量。 //所以如果想实现某个功能又不想污染全局变量的时候,会用这个自执行的匿名函数,常见于jquery插件 (function () { /** * 基本数据类型(3种) * (1)数字 number * 例如 3.1415927 ,0.251,.2,100,1.478E * (2)字符串 * string * (3)布尔 booble */ //数字型转字符串 var num1 = 3.1415927; var str1 = Number.toString(num1); document.write(typeof str1 == "string");//true document.write("<br>"); //四舍五入,保留两位有效数字 var num2 = num1.toFixed(2); document.write(num2);//3.14 document.write("<br>"); //返回指定的为数的数字 var num3 = num1.toPrecision(4); document.write(num3);//3.142 document.write("<br>"); //(Math) 介绍一点方法 //四舍五入round document.write(Math.round(4.7));//5 document.write("<br>"); //随机出处理0~1 document.write(Math.random()); document.write("<br>"); //0~10的随机数 document.write(Math.floor((Math.random() * 11))); document.write("<br>"); //字符串 //如何转成数字 var str2 = "aaa"; var str3 = "3.14"; var number = Number(str3); document.write(typeof number == "number");//true document.write("<br>"); document.write((str2 - 0) + "<br>");//NaN 非数值 document.write((str3 - 1) + "<br>");//如果是减法他回自动将字符串转成数字2.14 document.write((str3 + 1) + "<br>");//加法会当成字符串的拼接操作3.141 //布尔类型(boolean) //true | false var s = ""; var o = {};//true var l = [];//true var n = null; var f = false; var u = undefined; document.write("-------------------------------<br>"); if (!s) { document.write("s is false<br>"); } if (!o) { document.write("o is false<br>"); } if (!l) { document.write("l is false<br>"); } if (!n) { document.write("n is false<br>"); } if (!f) { document.write("f is false<br>"); } if (!u) { document.write("u is false<br>"); } /** s is false f is false u is false n is false */ //判断一个对象是否为""、null、undefined,直接使用 //if (str) { //} //数组 //扩展数组的方法 Array.each = function(array,fn) { for (var i = 0; i < array.length; i++) { fn(array[i]); } } var arr2 = [1, 2, 3, 45, 6, 7, 8]; Array.each(arr2,function(item) { document.write(item+"<br/>"); }); //函数 var str = "var show= function(){alert(100);}()"; //eval 它是把一个字符串解析成一个方法并且调用 eval(str); //数据库会返回一个字符串(长得像javaScrpit数组) var a = "[1,2]"; var array = eval(a); for (var i = 0; i < array.length; i++) { alert(array[i]); } //函数声明的两种方式 function aa() { } aa();//aa()上面和下面都可以调用 var bb = function() { } bb();//必须在bb()下面调用 //接收回调函数的函数 function add(x, y, fn) { this.x = x || 1;//如果有值就为x,否则默认为1 this.y = y || 1; if (fn) { fn(this.x + this.y); } } add(1,2,function(v) { if (v > 0) { alert("result>0"); } else { alert("result<=0"); } }); })(); </script>
<script type="text/javascript"> (function() { /** * conf = {gridName:"",gridCode:"",gridSize:""} */ function gridUtil(conf) { alert(conf["gridName"] + " " + conf["gridSize"]); } gridUtil({ gridName: "aaa", gridSize: 10 }); /** * 证明 : 基础变量是传递数值的,相当于“值类型” * 自定义对象传参方式是传得"地址",相当于“引用类型” */ //函数递归 //常见的编程题1-100用递归算法完成累加 function add(start, end) { var num = 0; num = num + start; if (start<end) { num = num + add(start+1,end); } return num; } alert(add(1, 100)); //函数使用技巧,代理函数:用程序来决定返回的新的函数(他是一个生产函数的函数) var person = { "jim": "m", "lili": "w" }; var test = function(name) { if (person[name] == "m") { return function(nk, wk) { alert(nk + " " + wk); } } else if (person[name] == "w") { return function(nk, wk, fk) { alert(nk + " " + wk + " " + fk); } } return null; } test("jim")("nk", "wk"); test("lili")("nk", "wk","fk"); })(); </script>