前端--阶段笔记(三) JS编程基础 03+04+05

Day03 循环

  1. for

  2. 双重for

  3. while

  4. do while

  5. continue break

for循环执行不相同代码

有计数器变量i的存在

for(var i = 1;i < 100;i++) {

​ console.log(‘这个人今年’ + i +‘岁了’);

}

prompt取过来的数据是字符串型的,需要转换为数字型才能正常使用。

异或是半加运算

一个数据异或另一个数据两次,最后得到的结果还是这个数据,用公式表示就是
a ^ b ^ b=a。

while循环比for更灵活

案例:

    var message = prompt('do you love me?');

        while (message !== 'i love you') {
    
    

            message = prompt('do you love me?');

        }

        alert('i love you too honey!');
continue

跳出本次循环,继续下一次循环

Day04 数组

创建数组 两个方法

1.new

var 数组名 = new Array();

​ var arr = new Array();

2.利用数字字面量创建

​ var arrayname = [];

数组里面的数据用逗号分隔

var array = [1,2,‘kafuka 老师’,true];

索引号从0开始。

输出整个数组: console.log(arry1);

数组遍历:for var k in循环 或者单纯的for 循环

数组长度:arr.length,动态的,可以随着数组元素数量变化而变化

不要直接给数组名字赋值,不然覆盖数组原有全部元素。

var newArry = [];

for (var i = 0;i < 10;i++){
    
    

	newArry[newArry.length] = i;

}

数组转化为字符串

var arytest = ['red','green','blue','pink'];
            var strtest = '';
//设置一个空字符串使用隐式转换
            var sep = '';
            for (var i = 0; i < arytest.length;i++){
    
    
                strtest += arytest[i] + sep;
            }

            console.log(strtest);
            //运行结果: "redgreenbluepink"

冒泡排序

原理:冒泡排序比较相邻两个元素大小,比N轮,每比一轮就可以把这一轮中最大的数字排在此轮最后面。是一种稳定排序算法。

冒泡排序算法的原理如下:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 重复以上步骤,从开始第一对到结尾的最后一对。结束后,最后的元素是这一组数字中最大的数。
  3. 除了最后一个元素,重复以上的步骤。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

c语言版:

#include <stdio.h>
 
#define ARR_LEN 255 /*数组长度上限*/
#define elemType int /*元素类型*/
 
/* 冒泡排序 */
/* 1. 从当前元素起,向后依次比较每一对相邻元素,若逆序则交换 */
/* 2. 对所有元素均重复以上步骤,直至最后一个元素 */
/* elemType arr[]: 排序目标数组; int len: 元素个数 */
void bubbleSort (elemType arr[], int len) {
    
    
    elemType temp;
    int i, j;
    for (i=0; i<len-1; i++) 
        /* 外循环为排序趟数,len个数进行len-1趟 */
        
        for (j=0; j<len-1-i; j++) {
    
     
            /* 内循环为每趟比较的次数,第i趟比较len-i次 */
            if (arr[j] > arr[j+1]) {
    
     
                /* 相邻元素比较,若逆序则交换(升序为左大于右,降序反之) */
                /*如果不是逆序,则不交换,保持原状,
                下一个对比的数字就不再是本轮循环中的起始的那个数字*/
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
}
 
int main (void) {
    
    
    elemType arr[ARR_LEN] = {
    
    3,5,1,-7,4,9,-6,8,10,4};
    int len = 10;
    int i;
     
    bubbleSort (arr, len);
    for (i=0; i<len; i++)
        printf ("%d\t", arr[i]);
    putchar ('\n');
     
    return 0;
}

JS:

        function bubbleSort(arr) {
    
    
           var i = arr.length, j;//i为数字长度,j为数组下标
           var tempExchangVal;//中转数字
           while (i > 0) {
    
    
               for (j = 0; j < i - 1; j++) {
    
    
                   if (arr[j] > arr[j + 1]) {
    
    
                       tempExchangVal = arr[j];
                      arr[j] = arr[j + 1];
                       arr[j + 1] = tempExchangVal;
                   }
                }
               i--;//重复n轮 n = i-1
            }
           return arr;
       }
        var arr = [3, 2, 4, 9, 1, 5, 7, 6, 8];
        var arrSorted = bubbleSort(arr);
        console.log(arrSorted);
        alert(arrSorted);

Day05 函数

形参实参数量不一致

1实参多,那么形参能接受几个就是几个,多余的扔掉

2实参少,形参可以看作是不用声明的变量,默认为undefined。
任何数字加上undefined 都是NaN。输出结果不可预计,需要尽可能匹配。

return总结

return后面的函数不会被执行。

return 只能返回一个值。返回return后面的最后一个值。

如果要同时输出多个结果,把多个结果放在一个数组里面,输出这个数组。数组会被看作一个结果。

如果函数没有return,则返回undefined。

return:1 .退出循环;2 .终止当前函数体内的代码,后面的都不执行;3 .返回return中的数值。

arguments

不确定有多少参数传递的时候,用arguments来获取。

伪数组
有长度
有索引

没有真正数组的一些方法,如pop();,push();
只有函数才有arguments对象,且已经内置好了。

例:

function getMax(){
    
    
    var max = arguments[0];
    for (var i = 1;i < arguments.length;i++){
    
    
        if (max < arguments[i]){
    
    
            max = arguments[i];
        }
    }
    return max;
}

console.log(getMax(11,11,234,6346));
console.log(getMax(9,11,23238954,6343425356));
console.log(getMax(3458395,11,2334,67364655,2359,38));

利用函数判断闰年

闰年条件:4年一闰,百年不闰,四百年再闰。

            function isLeapYear(year) {
    
    
                var flag = false;
                if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
    
    
                    flag = true;
                }
                return flag;
            }

            if (isLeapYear(2000)){
    
    
                console.log('is leap year!');
            }else {
    
    
                console.log('is not.');

            }

函数声明方式

1 函数关键字自定义函数(命名函数)

function fn () {
}
fn();

2.函数表达式(匿名函数)
函数没有名字
var fun = function(aru) {
console.log(aru);
}

这里的fun是一个变量的名字,并不是函数的名字,
但是这个变量的名字可以传递参数
如:fun(123);

猜你喜欢

转载自blog.csdn.net/codemokey/article/details/114199358