<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var i = 0, output1 = '';
while (i < 5) {
i++;
console.log(i);
}
//-------------以上是while循环,(同C)------------------------------------
do {
output1 += i;
i--;
} while (i > 0);
console.log(output1);
//------000以上是do-while循环(同c),先执行一次,在判断条件!--------------------------------------------
var i = 0, output1 = '';
while (i < 10) {
i++;
if (i % 2 == 0) {
output1 += i;
} else { continue; }
}
console.log(output1);
output1 = '';
while (i > 0) {
i--;
if (i % 2 != 0) {
output1 += i;
} else { break; }
}
console.log(output1);
//-------------------------以上是continue和break(同C)--------------------------------------
var sunshine = new Array(); //通过方法创建空数组,(同JAVA)
var sunshine1 = []; //字面量来创建数组,(比上面的好多了,,被java new对象所支配的恐惧)
var sunshine2 = [1, 1.2, 'ump45', true, null + undefined]; //功能强大的数组!
output1 = '';
for (var i = 0; i < sunshine2.length; i++) { //复习,总结的优势
output1 += sunshine2[i] + ' '; //如果知道了运算符的优先级,就知道这样的操作并不惊险~
} //js的数组索引方式无不同,功能强大,可保存多类型值
console.log(output1); //经典NaN
//=====================当想调用元素超数组范围时,会显示undefined,不会报错,贴心但致命------------------
console.log(null + undefined); //直接打印得不到真值(?)
console.log(typeof (null + undefined));
console.log(isNaN(null + undefined))
var sunshine3 = [1, 'a'];
sunshine3.length += 2; //通过加数组长度来修改数组(扩容or缩减),抽象!(重!)
console.log(sunshine3); //通过数组名来打印数组(控制台),会在前面显示(4)代表数组当前长度
alert(sunshine3); //然而alert不会,可以认为是便利开发者的做法(?)
//==========================数组元素的按照索引加,改同c===========================
var sunshine4 = [1, 0, 2];
sunshine4 += 2;
console.log(sunshine4); //答案是1,0,22(22出现的原因?)
var sunshine5 = [];
for (var i = 0; i < 10; i++) {
sunshine5[i] = i;
}
console.log(sunshine5)
var sunshine6 = [1, 2, 3, 'a', 0, false];
var j = 0, sadness = [];
console.log(sunshine6);
for (var i = 0; i < sunshine6.length; i++) {
if (sunshine6[i] != 0) {
sadness[j] = sunshine6[i];
j++;
}
if (sunshine6[i] == 0) {
console.log('QAQ');
} //会出现2个 QAQ,结合上述,false在相等判断时会被当成0,
}
console.log(sadness);
//---------------以上是数组的‘删减’,其实就是新创建数组+循环判断输入---------------------------
//-----------------接下来是大货-------------------------------------------------------------
var biggun = [10, 7, 3, 4, 6, 6, 2];
var temp;
for (var i = 0; i < biggun.length - 1; i++) {
for (var j = 0; j < biggun.length - i - 1; j++) {
if (biggun[j] < biggun[j + 1]) {
temp = biggun[j];
biggun[j] = biggun[j + 1];
biggun[j + 1] = temp;
}
}
}
console.log(biggun);
//-------------------以上是冒泡排序------------------------------------------------
function getsum(num1, num2) { //函数阶段1--- 声明函数
var sum = 0;
for (var i = num1; i <= num2; i++) {
sum += i;
}
return sum;
} //最好写成 pure function!<纯函数>(从youtube上看到的)
console.log(getsum(0, 10)); //请注意,不写return的话会出现undefined!!!
// 在上面 ------------函数阶段2--- 调用函数
//--------------------------函数同C基本相同,形参小于实参不会报错,比较宽松,不想java..------------------------
//---------------------------当实参小于形参时,少的会成undefined。。----------------------------
//-----------------------------js中,形参默认undefined--------------------------------------------
function a1(num1, num2) {
return num1 > num2 ? num1 : num2;
}//----------一个酷炫的写法~_~
console.log(a1(3, '10')); //经典自动转型
function a2(ump) { //论如何用函数接收数组,,,还是差不多,主要是函数内部的结构
var max = ump[0];
for (var i = 0; i < ump.length; i++) {
if (max < ump[i]) {
max = ump[i];
}
}
return max;//return便是函数的终止,所以 return 1,2;只会在返回1后就终止!QAQ
} //想返回多个值返回数组就行了!(变相实现)
//函数没有 return 则返回undefined!!------------------------------
console.log(a2([1, 2, 3, 4]));
//-------------------------------------以上是函数基础-------------------------------------------
//arguments的使用!(重!),不知道要传几个值可以用!----------------------------------------------
function a3() {
console.log(arguments); //重!arguments可以看到传进来的值
}//展示的是一个伪数组,可以遍历,有部分属性,如length,而且可以按照传入顺序进行有序存储
a3(1, 2, 3, 4);
function a2update() {
var max = arguments[0];
for (var i = 0; i < arguments.length; i++) {
if (max < arguments[i]) {
max = arguments[i];
}
} //用arguments来算任意个值的最大值,🐂!
return max;
}
console.log(a2update(1, 2, 3, 4)); //答案为4
console.log(a2update([1, 2, 3, 4])); //答案为[1,2,3,4],看来即使是随便的js,也是有限制的。。
//------------------------------大货!大货!!---------------------------------------------------
function maopao(hk){//封装冒泡排序
var temp;
for(var i=0;i<hk.length-1;i++){
for(var j=0;j<hk.length-i-1;j++){
if(hk[j]>hk[j+1]){
temp=hk[j];
hk[j]=hk[j+1];
hk[j+1]=temp;
}
}
}
return hk;
}
console.log(maopao([2,4,1,10]));
function a11(){
console.log('a11');
a22(); //函数在函数中的调用^
console.log('hhh');
}
function a22(){
console.log('a22');
}
a11();
//P.S。以上用的都是利用命名函数所生成的函数---------------------------------------
var a33 = function(aname){ //注意:a33为变量名,不是函数名
console.log('im also a function');
console.log(aname);
} //这是匿名函数
//a33里面存的就是一个函数
a33('HK416');
</script>
</body>
</html>