<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
//js里面所有的对象都是动态创建的,所以对象的属性可以动态添加。用new创建的都可以认为是对象
//js的数组相当于C#的数组,集合,hashtable的集合 同时它的属性可以动态添加
//var arr = new Array();
//arr[0] = new Array();
//arr[0][0] = "aa";
//arr[1] = new Array();
//arr[1][0] = "bb";
//arr[1][1] = 30;
//for (var i = 0; i < arr.length ; i++)
//{
// for (var j=0;j<arr[i].length;j++)
// {
// document.writeln(arr[i][j]);
// }
//}
//=============================数组二 动态添加属性
//var arr = new Array();
//arr.name = "aa";
//arr.age = 20;
//document.writeln(arr.name+"<><><>"+arr.age);
//============================数组三
//var arr = new Array();
//arr[0] = new Array();
//arr[0].name = "aa";
//arr[0].age = 20;
//arr[1] = new Array();
//arr[1].name = "bb";
//arr[1].age = 30;
//for (var i = 0; i < arr.length; i++)
//{
// document.writeln(arr[i].name + "<><><>" + arr[i].age+"<br/>");
//}
//=========================数组四
//var arr = { "name": "aa", "age": 20 };
//document.writeln(arr.name+"<><><><>"+arr.age);
//=========================数组五
//var arr = new Array();
//arr[0] = { "name": "aa", "age": 20 };
//arr[1] = { "name": "bb", "age": 25 }; //如果属性值没有就会显示undefind
//for (var i = 0; i < arr.length; i++)
//{
// document.writeln(arr[i].name+":"+arr[i].age+"<br/>");
//}
//=========================数组六 数组的字面量 用中括号[]
//var arr = [{
// "name": "aa", "age": 20, "address": "aaaaa" //规则:值必须使用冒号
//}, {
// "name": "bb", "age": 25, "address": "bbbbbb"
//}];
//for (var i = 0; i < arr.length; i++) {
// document.writeln(arr[i].age + "<><>" + arr[i].name + "<><>" + arr[i].address + "<br/>");
//}
//========================数组模拟(先进先出)push从头进 pop 出
//var arrStack = [];
//arrStack.push("刘德华");
//arrStack.push("郭富城");
//arrStack.push("张学友");
////不能使用arrstack.length来判断因为每取一次长度就会减一
//for (var i = 0; i < 3; i++) {
// var item = arrStack.pop();
// alert(item);
//}
//=================================unshift 从后面进,shift 出 后进先出
//var arrStack2 = [];
//arrStack2.unshift("刘德华");
//arrStack2.unshift("郭富城");
//arrStack2.unshift("张学友");
////不能使用arrstack.length来判断因为每取一次长度就会减一
//for (var i = 0; i < 3; i++) {
// var item = arrStack2.shift();
// alert(item);
//}
//=====================================数组模拟,队列(queue)
//var arrQueue = [];
//arrQueue.push("刘德华");
//arrQueue.push("郭富城");
//arrQueue.push("张学友");
//for (var i = 0; i < 3; i++) {
// var item = arrStack2.shift();
// alert(item);
//}
//==================数组排序
//var arrSort = [1, 2, 3, 6, 7, 4, 6, 3];
//alert(arrSort);
//arrSort.sort();//数组排序
//alert(arrSort);
//arrSort.reverse();//整个数组反转过来
//alert(arrSort);
//
//function facorial(num) {
// if (num <= 1) {
// return 1;
// }
// else {
// return num * facorial(num - 1);
// }
//}
//var res = facorial(3);//相当于 var res=3*2*1;
//alert(res);
function facorial(num) {
if (num <= 1) {
return 1;
}
else {
return num * arguments.callee(num - 1);//递归时,应该使用方法内部属性arguments.callee //arguments.callee 当前方法的对象
}
}
var res = facorial(3);//相当于 var res=3*2*1;
alert(res);
</script>
</head>
<body>
</body>
</html>