<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>