js基础语法

一. 变量

1.输入输出语句

1.1输出语句
document.write('输出的内容');
//向body内输出内容
//输出的内容写的是标签,也会解析成网页元素
1.2输出语句
alert('输出的内容');
//页面弹出警示对话框
1.3 控制台输出内容
console.log('控制台打印')
//调试使用
1.4用户输入内容
prompt('请输入你的姓名:')
​

2.变量类型

   //1.数字型
    const num = 5;
    console.log(typeof num);//Number
    //2.字符型
    const str = '字符型';
    console.log(typeof str);//String
    //3.布尔值
    const flag = true;
    console.log(typeof flag);//Boolean
    //4.声明了变量,但没有赋值
    const vari = undefined;
    console.log(typeof vari);//Underfined
    //5.声明了变量为空值
    const timer = null;
    console.log(typeof timer);//Null
    // 1.变量命名规范
    // 2.由字母(A-Z a-z) 数字(0-9) 下划线(_) 美元符号($)组成
    // 3.严格区分大小写
    // 4.var app; var APP;是两个变量
    // 5.不能以数字开头
    // 6.不能是关键字,保留字
    // 7.遵守驼峰命名法,首字母小写,后面单词首字母需要大写
    // 8.变量的类型根据=右边的等号的数值来判断
2.1交换变量
  let temp,
      apple1 = '青苹果',
      apple2 = '红苹果';
    temp = apple1;
    apple1 = apple2;
    apple2 = temp;
    console.log(apple1);
    console.log(apple2);
2.2 let,var 和const的区别
var 声明:
//1.可以先使用 在声明 (不合理)
//2.var 声明过的变量可以重复声明(不合理)
//3.比如变量提升、全局变量、没有块级作用域等等
let 和 const
//变量先给const,如果发现它后面是要被修改的,再改为let
2. 为什么const声明的对象可以修改里面的属性?
//1)因为对象是引用类型,里面存储的是地址,只要地址不变,就不会报错
//2)建议数组和对象使用 const 来声明
3. 什么时候使用let声明变量?
//1)如果基本数据类型的值或者引用类型的地址发生变化的时候,需要用let
//2)比如 一个变量进行加减运算,比如 for循环中的 i++
​
2.3 typeof 判断变量类型
 let num = prompt('请输入数字')
    console.log(typeof num);//字符型
    let nm = prompt();
    console.log(typeof nm);//字符型
2.4全局变量
    // 1.全局变量
    //全局变量 在整个html页面都可以使用
    let num = 10;
    console.log(num);//10
    function fn() {
      console.log(num);//10
    }
    fn();
    //2.局部变量 只能在局部作用域使用
    function fun() {
      let num1 = 10;
      num2 = 20;//全局变量
      console.log(num1);//10
    }
    fun();
    // console.log(num1); 报错
    console.log(num2);//20
    //3. 作用域链 内部函数访问外部函数, 采取链式查找最近的值
    let i = 10;
    function name1() {
      let i = 20;
      function name2() {
        console.log(i);//20
​
      }
      name2();
    }
    name1();
    console.log(i);//10
    // 4.案例
    let a = 1;
    function an() {
      let a = 2;
      let b = '22';
      function an1() {
        let a = 3;
        function an2() {
          let a = 4;
          console.log(a);//4
          console.log(b);//22
        }
        an2();
      }
      an1();
    }
    an();
​

2.5 预解析

//预解析
    //var 变量提升 ,把所有的变量提升到当前因为页面的最前面,不提升赋值操作
    //函数提升 ,把所有的函数提升到当前因为页面的最前面,不调用函数
    fun();
    var fun = function () {
      console.log(22);//报错
    }
    //相当于
    var fun;
    fun();
    fun = function () {
      console.log(22);
    }
​
    fn();
    function fn() {
      console.log(22);
    }
    //相当于
    function fn() {
      console.log(22);
    }
    fn();
    //案例
    var num = 10;
    fc();
    function fc() {
      console.log(num);// 函数被提到最前面 undefined
      var num = 20;
      console.log(num);//20
​
    }
    var a = 10;
    f1();
    function f1() {
      var b = 9;
      console.log(a);//undefined
      console.log(b);//9
      var a = '123';
    }
    f2();
    console.log(j);//报错
    console.log(k);//9
    console.log(c);//9
    function f2() {
      var j = k = c = 9;//相当于var a=9 ; b=9;c=9
      console.log(j);//9
      console.log(k);//9
      console.log(c);//9
    }

 

3.数字类型

<script>
    //1.1数字类型 颜色是蓝色
    const num=10;
    console.log(num);
    //1.2数值最大值
    alert(Number.MAX_VALUE);//1.7976931348623157e+308
    //1.3数值最小值
    alert(Number.MIN_VALUE);//5e-324
    //1.4isNaN()判断数据类型是非数字
    console.log(isNaN(12));//false
    console.log(isNaN('PINK'));//true
    //1.5数据型三个特殊值
    alert(Infinity);//无穷大
    alert(-Infinity);//无穷小
    alert(NaN);//非数字
  </script>
3.1 parseInt 转换为数字类型
    //2.转换为数字型
    const age=prompt('请输入你的年龄');
    console.log(parseInt(age));
    //2.1parseInt 取整
    console.log(parseInt('3,14'));//3
    console.log(parseInt(5.5555));//5
    //2.2parseFloat 可以保留小数
    console.log(parseFloat(3.14));//3.14
    console.log(parseFloat(5.555));//5.55

3.2隐形转换

//递增递减++ --,一元加减 +a、- a(结果的符号取反),二元 -,乘法,除法,求余,隐式转换为 Number;
<script>
    let num1 = +'1' + 2;
    let num2 = '1' - 2;
    let num3 = '1' / 2;
    let num4 = '1' * 2;
    let num6='1'%2
    let num5='1';
    num5++;
    console.log(typeof num1);//number 3
    console.log(typeof num2);//number -1
    console.log(typeof num3);//number 0.5
    console.log(typeof num4);//number 2
    console.log(typeof num5);//number 2
    console.log(typeof num6);//number 1
  </script>

 

4.字符型

<script>
    //1.字符型 颜色是黑色
    const str='我是程序员';
    console.log(str);//我是程序员
    //2.外双内单 外单内双
    const str1='我是"高富帅"程序员';
    console.log(str1);//我是"高富帅"程序员
    // 3. \n 换行转义符
    const str2='我是"高富帅"\n程序员';
    console.log(str2);
    //4.\t 空格转义符
    const str3='我是"高富帅"\t程序员';
    console.log(str2);
  </script>
4.1 length
    //通过字符串的lenght可以判断整个字符的长度
    console.log(str1.length);//10
4.2字符串的拼接
   //1.字符串拼接: 字符串+任何类型=拼接之后的新字符
    alert('hello'+' '+'world')//hello world
    //2.数字字符+数值
    alert('100'+100)//100100字符型
    //3.字符凭借加强
    let age =18;
    console.log('我已经'+age +'岁了');//我已经18岁了
4.3转换为字符型
      let a = 5;
      a = String(a); //强制转换为字符串
      a = a.toString();
      console.log(a);
      var a = true;
      a = a.toString(); //toString是对象的方法
      a = String(a);
      console.log(a);

5.Boolean

 //代表false:'' 0 NaN null underfined 其他都是true
     console.log(Boolean(''));//false
     console.log(Boolean(0));//false
     console.log(Boolean(NaN));//false
     console.log(Boolean(null));//false
     console.log(Boolean(undefined));//false
5.1隐形转换
//1.逻辑语句的类型转换:当使用if、while、for 时,隐式转换为布尔值;
//2.逻辑表达式:
//3.! 逻辑非,隐式转换为布尔值,并取反,!!两次逻辑非,隐式转换为布尔值;
//4.|| 和 && 会将非布尔值,隐式转换为布尔值,再判断;

6.浮点数

   //不要判断浮点数是否相等,存在精度问题
    let result=0.1+0.2;
    console.log(result);//0.30000000000000004
    console.log(0.1==0.2);//flase

7.递增

    let   num=10;
    //先加1 ,在返回值
    num1=++num;//num=num+1
    console.log(num);//11
    console.log(num1);//11
    //先返回值,再加1
    num2=num++;//11
    console.log(num);//12
    console.log(num2);//11
    let a=10,
    b=++a+2,//a=11 b=13
    c=a+++2,// a=12 c=13
    d=a+++ ++a;//a=14  d=26
    console.log(a);//14
    console.log(b);//13
    console.log(c);//13
    console.log(d);//26

8.逻辑 中断

    //表达式1||表达式2
    //1.第一个如果是真,则返回表达式1
    //2.第一个如果是假,则返回表达式2
    let num = 0
    console.log(0 || 123);//123
    console.log(123 || 123 || 456);//123
    console.log(0 || 0 || 123);//123
    console.log(num++ || 123);//123 num=1
    console.log(++num || 123);//2

9.赋值运算符

    let age = 10;
    age += 5;//age=age+5 15
    age -= 5;//age=age-5 10
    age *= 5;//age=age*5 50
    console.log(age);

二.if语句

1.判断时间段

   let time = prompt('请输入时间阶段');
    if (time == '12点') {
      alert('中午好');
    } else if (time == '18点') {
      alert('傍晚好');
    } else if (time == '23点') {
      alert('深夜好');
    }
    time = parseInt(time);
    if (time >= 8 && time <= 12) {
      alert('上午好');
    } else if (time > 12 && time <= 17) {
      alert('下午好');
    } 

2.比较大小

   let value1 = prompt('请输入第一个数字'),
        value2 = prompt('请输入第二个值');
    if (value1 > value2) {
      alert(value1);
    } else {
      alert(value2);
    } 

3.判断奇偶

     let num=prompt('请输入数字');
     if(num%2==0){
       alert('偶数');
     }else{
       alert('奇数');
     } 

4.判断星期

    let day = prompt('请输入数字');
    switch (day) {
      case '1':
        alert('星期一');
        console.log(day);//字符型
        break;
      case 1:
        alert('星期一');
        console.log(typeof day);//number
        break;
      case '2':
        alert('星期二');
        break;
      case '3':
        alert('星期三');
        break;
      case '4':
        alert('星期四');
        break;
      case '5':
        alert('星期五');
        break;
      case '6':
        alert('星期六');
        break;
      case '7':
        alert('星期七');
        break;
    }

5.switch case 语句

    //1.接收班长口袋的钱数
    var money=prompt('请输入钱数');
    if (money>=2000){
      alert('请大家吃西餐');
    }
    else if (money<2000&&money>=1500){
      alert('请大家吃快餐')
    }
    else if (money<1500&&money>=1000){
      alert('请大家喝饮料')
    }
    else if (money<1000&&money>=500){
      alert('请大家吃棒棒糖')
    }
    else {
      alert('让班长把钱带够')
    }
    //2.成绩定级
    let result=prompt('请输入分数')
    if (result>=90) {
      alert('A')
    }
    else if (result>=80) {
      alert('B')
    }
    else if (result>=70) {
      alert('C')
    }
    else if (result>=60) {
      alert('D')
    }
    else  {
      alert('不及格')
    }

三. for循环

1.求和

// 1.求1~100之间所有的数字的总和与平均值
    let sum = 0;
    let average = 0;
    for (let i1 = 1; i1 <=100; i1++) {
      sum = sum + i1;
    }
    console.log(i1);//101
    average = sum /(i1-1);
    console.log(average);//50
    console.log(sum);//5050
    //2.求1~100之间所有的奇数和偶数的总和
    let even =0;
    let odd=0;
    for (let i2 = 1; i2 <=100; i2++) {
      if (i2%2==0) {
        even=even+i2;  
      }else{
        odd=odd+i2;
      }
    }
    console.log(even);
    console.log(odd); 
    //3.求100以内7的倍数的总和
    let sum7 =0;
    for (let i3 = 1; i3 <=100; i3++) {
      if (i3%7==0) {
        sum7+=i3;  
      }
    }
    console.log(sum7); 

2.求阶乘

   //计算1~100的阶乘的和
    let a=1;
    let sum=0;
    for (let i =1;i <=100;i++) {
      a=a*i;
      sum+=a; 
    }
    console.log(sum);

3.打印矩形

    let str='';
    for(let i=1;i<=10;i++){
      for(let j=1;j<=10;j++){
        str+='☆';
      }
      str+='\n'
    }
    console.log(str);

4.打印倒三角形

    let  str='';
    for(let i=0;i<10;i++){
      for(let j=10-i;j>0;j--){
        str+='☆';
      }
      str+='\n'
    }
    console.log(str);

 

5.打印正三角形

    let str = '';
    for (let i = 1; i <= 10; i++) {
      for (let j = 1; j <= i; j++) {
        str += '☆';
      }
      str += '\n'
    }
    console.log(str);

6.打印等腰三角形

 var str='';
    for(let i=1;i<=10;i++){
      for(let j=10-i;j>0;j--){
        str+='☆';
      }
      for(let k=1;k<=i;k++){
        str+='★';
      }
      for(let a=2;a<=i;a++){
        str+='★';
      }
      for(let j=10-i;j>0;j--){
        str+='☆';
      }
      str+='\n'
    }

7.打印九九乘法表

    let str='';
    for(let i=1;i<=9;i++){
      for(let j=1;j<=i;j++){
        str+=i+'*'+j+'='+i*j+'\t';
      }
      str+='\n';
    }
    console.log(str);

8.打印水仙花数

//水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
    for (let i = 100; i <= 999; i++) {
      let a = parseInt(i / 100);
      let b = parseInt(i % 100 / 10);
      let c = parseInt(i % 10);
      if (i == a * a * a + b * b * b + c * c * c) {
        console.log(i);
      }
    }

9.质数

      //方法一
      function test(num) {
      for (let i = 2; i < num; i++) {
        if (num % i == 0) {
          break;
        }
      }
      if (i == num) {
        alert(num + "是素数");
      } else {
        alert(num + "是合数");
      }
    }
    test(8); 
    //方法二
     function test(num) {
      let flag=true;
      for (let i = 2; i < num; i++) {//i=7  num=7
        if (num % i == 0) {
          flag=false;
          break;
        }
      }
      if (flag == true) {
        alert(num + "是素数");
      } else {
        alert(num + "是合数");
      }
    }
    test(8); 
    //方法三
    function test(num) {
      let flag=true;
      let sum=0;
      for (let i = 2; i < num; i++) {//i=7  num=7
        if (num % i == 0) {
         sum++;
        }
      }

      if (sum == 0) {
        alert(num + "是素数");
      } else {
        alert(num + "是合数");
      }
    }
    test(8);

10.打印菱形

    let str='';
    for (let i=1;i<=5;i++) {
      for(let j=1;j<=5-i;j++){
        str+='◆';
      }
      for(let k=1;k<=2*i-1;k++){
       str+='◇';
      }
       str+='\n';
    }
    for (let a=1;a<=5;a++) {
      for(let b=1;b<=a;b++){
        str+='◆';
      }
      for(let c=0;c<10-(2*a+1);c++){
        str+='◇';
      }
      str+='\n';
    }
    console.log(str);

11.简易ATM

    let moneny = 100;
    let num = prompt('请输入数字:\n1.存钱\n2.取钱\n3.显示余额\n4.退出');
    switch (num) {
      case '1':
        value = prompt('请输入你要存的钱数');
        moneny = moneny + parseInt(value);
        alert('你的余额为:' + moneny + '元');
        break;
      case '2':
        value = prompt('请输入你取的钱数');
        moneny = moneny - value;
        alert('你的余额为:' + moneny + '元');
        break;
      case '3':
        alert('你的余额为:' + moneny + '元');
        break;
      case '4':
        alert('你已退出');
        break;
      default:
        break;
    }

12.无限循环

    let you = prompt('你爱我吗');
    while (you !== '你爱我') {
      you = prompt('你爱我吗');
    }
    alert('我也爱你');

四.数组

一) 数组基础

1.创建数组 arr=[ ]

    //1.创建一个新数组
    var arr= new Array();//创建一个空了的数组
    //2.利用数组字面量创建了一个空的数组
    var arr=[];//空数组
    var arr=['a','b','c'];
    //索引号
    // var arr=['a','b','c']
    //索引号     0    1   2

2.遍历数组

    let  arr = ['a', 'b', 'c'];
    for (let i = 0; i < 3; i++) {
      console.log(arr[i]);
    }

3.数组长度 arr.lenght

   //数组长度 数组名.lenght
    const arr = [1, 2, 3, 4, 5];
    console.log(arr.length);//5
    //遍历数组
    for (let i = 0; i < arr.length; i++) {
      console.log(arr[i]);//1 2 3 4 5
    }

4.求数组的总和和平均值

    let arr = [4, 7, 5, 9, 120];
    let sum = 0;
    let average = 0;
    for (let i = 0; i < arr.length; i++) {
      sum += arr[i];
    }
    average = sum / arr.length;
    console.log(sum);
    console.log(average);

5.求数组最大值

    let arr=[3,6,4,89,13,300];
    let max=0;
    for(let i=0;i<arr.length;i++){
      if(arr[i]>max){
        max=arr[i];
      }
    }
    console.log(max);

6.数组转换为字符串

    const arr=['red','blue','green','yellow','pink'];
    let str='' ;
    for(let=0;i<arr.length;i++){
      str+=arr[i]+'\n';
    }
    console.log(str);

7.新增,修改数组长度

    const arr=[1,2,3,4,5];
    console.log(arr.length);//5
    arr.length=6;//把数组的长度改为6
    //1.追加新元素
    arr[6]='pink';
    //2.替换元素
    arr[0]='red';
    console.log(arr[0]);//red
    console.log(arr[4]);//5
    console.log(arr[5]);//underfined
    console.log(arr[6]);//pink

8.颠倒数组

    //方法一
    const arr = [1, 2, 3, 4, 5];
    const arrNew = [];
    for (let i = 0; i < arr.length; i++) {
      for (let j = 0; j < arr.length - i; j++) {
        arrNew[j] = arr[i];
      }
    }
    console.log(arrNew);
    //方法二
    const arr = [1,2,3,4,5];
    const newArr=[];//刚开始new.就是0
    for(let i=arr.length-1;i>=0;i--){
      //新数组索引号从0开始,依次递增
      newArr[newArr.length]=arr[i];
    }
    console.log(newArr);
  

9.利用循环添加元素

    const arr=[];
    for (let i=0; i <100; i++) {
     arr[i]=i+1;
    }
    console.log(arr);

10.数组去重

    const arr=[1,0,3,4,0,5,0,8];
    const newArr=[];
    for(let i=0;i<arr.length;i++){
      if(arr[i]!==0){
        newArr[newArr.length]=arr[i];
      }
    }
    console.log(newArr);

11.冒泡排序

   const arr=[1,4,25,7,90,5,14334,35434,76568];
   const temp=0;
   for(let i=0;i<arr.length;i++){
    for(let j=0;j<arr.length-i;j++){
      if(arr[j]>arr[j+1]){
        temp=arr[j];
        arr[j]=arr[j+1];
        arr[j+1]=temp;
      }
    }
   }
   console.log(arr);

二) .数组的方法

1.检测数组 instanceof

    //1.instanceof 
    let arr=[];
    let obj={};
    console.log(arr instanceof Array);//true
    console.log(obj instanceof Array);//flase
    //2. Array.isArray()
    console.log(Array.isArray(arr));//true
    console.log(Array.isArray(obj));//flase

2.增加数组元素 push

    //1.push 在数组后面加一个或多个元素
    let arr=[1,2,3,4,5];
    console.log(arr.push('red','pink'));//7
    console.log(arr);
    //去重数组
    let arr1=[102,3,6,444,666,56,99];
    let newArr1=[];
    for(let i=0; i<arr1.length;i++){
      if(arr1[i]<100){
        newArr1.push(arr1[i]);//[3,6,56,99]
      }
    }
    console.log(newArr1);
    //2.unshift 在数组前面加一个或多个元素
    let newArr=arr.unshift('1', '2','3','5' )
    console.log(newArr);//11
    console.log(arr);
    for(let i=0; i<arr1.length;i++){
      if(arr1[i]<100){
        newArr1.unshift(arr1[i]);//[99,56,6,3]
      }
    }

3.删除数组元素 pop

    let arr = [1, 2, 5, 9, 99, 95];
    console.log(arr.pop());//95
    console.log(arr);[1, 2, 5, 9, 99]
    //1.pop可以删除数组的最后一个元素,一次只能删除一个
    //2.pop()没有参数
    //3.返回的结果是删除的元素
    //4.原数组也会变化
    console.log(arr.shift());//1
    console.log(arr);//[1,2,5,9,99]
    //1.pop可以删除数组的最前面一个元素,一次只能删除一个
    //2.pop()没有参数
    //3.返回的结果是删除的元素
    //4.原数组也会变化

4.翻转 reverse 和排序 sort

    //1.翻转数组  reverse
    let arr=['pink','red','blue'];
    arr.reverse();
    console.log(arr); ['blue', 'red', 'pink']
    //2.数组排序  sort
    let arr1=[1,3,25,9,95,99,69];
    arr1.sort(function (a,b) {
      //return a-b;升序排列
      return b-a;//降序排列
    })
    console.log(arr1);[99, 95, 69, 25, 9, 3, 1]

5.返回数组索引号 indexOf

    //1.indexOf 返回数组元素的索引号,从前面开始查找
    //只返回第一个满足条件的索引号
    //找不到元素,返回-1
    let arr=[1,1,1,2,35,5,66,66,7];
    console.log(arr.indexOf(1));//0
    console.log(arr.indexOf(9));//-1
    //2.lastindexOf 从后面开始查找
    console.log(arr.lastIndexOf(1));//2
    console.log(arr.lastIndexOf(9));//-1

6.利用indexOf 去重数组

   function fn(arr) {
     let newArr = [];
      for (let i = 0; i < arr.length; i++) {
        if (newArr.indexOf(arr[i]) === -1) {
          newArr.push(arr[i]);
        }
      }
      return newArr;
    }
    let arr = [1, 1, 11, 1, 5, 79, 6, 55, 666];
    fn(arr);
    console.log(fn(arr));//[1, 11, 5, 79, 6, 55, 666]

7.tostring()将数组转换为字符串 join 分隔符

     //1.tostring() 将数组转换为字符串
     let arr = [1,12,3];
     console.log(arr.toString());//1,12,3 黑色
     //2 join(分隔符)
     let arr1=['blue','red','pink']
     console.log(arr1.join());//默认 blue, red,pink
     console.log(arr1.join('-'));//默认 blue- red-pink
     console.log(arr1.join('='));//默认 blue=red=pink

五.函数

1.函数声明

    //方法一
    function fn(aru) {
      console.log(aru);
    }
    //调用函数
    fn('调用函数');
    //方法二
    const na = function (aru) {
      console.log('我是函数表达式');
      console.log(aru);
    }
    na(aru);

2.利用函数求任意数的总和

    function getSum(start,end) {
      var sum=0;
      for(i=start;i<=end;i++){
        sum+=i;
      }
      console.log(sum);
    }
    getSum(1,100);//5050
    getSum(1,1000);//500500

3.函数形参和实参

    function getSum(num1,num2){
      console.log(num1+num2);
    }
    //1.如果实参的个数和形参的个数一致,正常输出结果
    getSum(1,2);//3
    //2.如果实参的个数和等于大于形参的个数一致,会取得形参的个数
    getSum(1,2,3);//3
    //3.如果实参的个数小于形参的个数
    //4.num2是一个变量没有接受值,结果是underfined
    getSum(1);//NaN

4.利用函数求两个数的最大值

 function getSum(num1,num2) {
      if(num1>num2){
        console.log(num1);
      }else{
        console.log(num2);
      }
    }
    getSum(2,59);

5.return 返回值

   function getSum(num1,num2) {
      //return 只能返回一个值
      return num1+num2;//3
      console.log('我是不会被执行了');  
    }
    console.log(getSum(1,2));
    function getSums(num1,num2) {
      //return 只能返回一个值
      //返回的结果是最后一个值
      return num1,num2;//2
    }
    console.log(getSums(1,2));
    //求任意两个数的加减乘除
    function getResult(num1,num2) {
      return [num1+num2,num1-num2,num1*num2,num1/num2];   
    }//[3, -1, 2, 0.5]
    var re=getResult(1,2);
    console.log(re);

6.计算器

    let value = prompt('1.加法\n2.减法\n3.乘法\n4.除法');
    function getResult(num1, num2) {
      switch (value) {
        case '1':
          return num1 + num2;
        case '2':
          return num1 - num2;
        case '3':
          return num1 * num2;
        case '4':
          return num1 / num2;      
      }
    }
    let age1=prompt('请输入第一个数字');
    let age2=prompt('请输入第二个数字');
    let value1=parseFloat(age1);
    let value2=parseFloat(age2);
    let re=getResult(value1,value2);
    alert('结果为:'+re);

7.用户输入多个数字的最大值

    const max = 0;
    const num1=parseInt(prompt('请输入第一个值'));
    const num2=parseInt(prompt('请输入第二个值'));
    const num3=parseInt(prompt('请输入第三个值'));
    const arr = [num1, num2, num3];
    function fn(arr) {
      for (let i = 0; i < arr.length; i++) {
        if (arr[i] > max) {
          max = arr[i];
        }
      }
    }
    fn(arr);
    alert(max);
    console.log(arr);
    console.log(max);

8.arguments 的使用

    //arguments 里面储存了所有传递过来的实参 arguments=[1,2,3]
    function fn() {
       for (let i=0; i<arguments.length;i++){
        console.log(arguments[i]);//1 2 3
       }
    }
    fn(1,2,3);

9.利用argument求最大值

   function fn() { 
      let max=arguments[0];
      for(let i=1;i<arguments.length;i++){
        if(arguments[i]>max){
          max=arguments[i];
        }
      }
      return max;
    }
    console.log(fn(1,23,5));

10.利用函数翻转数组

 function reverse(arr) {
      let newArr=[];
      for(let i=arr.length-1;i>=0;i--){
        newArr[newArr.length]=arr[i];
      }
      return newArr; 
    }
    let arr1=reverse([1,2,3,4,5]);
    console.log(arr1);

11.利用函数封装冒泡排序

function  sort(arr) {
      let newArr=[];
      for(let i=0;i<arr.length-1;i++){
        for (let j=0;j<arr.length-i-1;j++) {
          if(arr[j]>arr[j+1]){
            let temp=0;
            temp=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=temp;
          }
        }
      }
      return arr;
    }
   let arr1=sort([5,6,12,45,9,143,89]);
    console.log(arr1);

12.利用函数判断闰年

function fn(year) {
      let flag = false;
      if (year % 4 == 0 && year % 100 !== 0 || year % 400 == 0) {
        flag = true;
      }
      return flag;
    }
    console.log(fn(2000));

13.调用函数

    function fn1(){
      console.log(111);
      fn2();
      console.log(222);
    }
    function fn2() {
      console.log(333);
      console.log('fn2');
    }
    // 111 333 fn2  222

六.对象

1.创建对象 obj={ }

 //1.方法一 创建对象 
  const object={
    name:'张三丰',
    age:18,
    sayHi:function(){
      console.log('hi~');
    }
  }
  //调用方法一
  console.log(object.name);
  //调用方法二
  console.log(object['age']);
  //调用对象的方法
  object.sayHi();
  console.log(object);
  //方法二
  let obj= new Object();
  obj.name='张三丰';
  obj.age=18;
  obj.sex='男';
  obj.sayHi=function(){
      console.log('hi~');
    }
    console.log(obj);

2.new构造函数创建对象

   function Star(na,age,sex ,sing) {
      this.na=na;
      this.age=age;
      this.sex=sex;
      this.sing=function (a) {
        console.log(a);  
      }
    }
    let obj=new Star('我',18,'男');
    obj.sing('冰雨');
    console.log(wo.na);
    console.log(typeof wo);
    //new创建了一个空的对象
    //this就会指向创建空了对象
    //返回这个对象

3.for in 遍历对象

   const obj = {
      name: 'pink',
      age: 18,
      sex: '男',
      fn: function () {
      }
    }
    //for in 遍历对象
    for (const k in obj) {
      console.log(k);//属性名
      console.log(obj[k]);//属性值
    }
    //对象案例
    const object = {
      color: 'pink',
      weight: '18kg',
      height: '180cm',
      fn: function () {
        console.log('我可以打游戏,听音乐');
      }
    }
    for (const key in object) {
     console.log(key);
     console.log(object[key]);
    }

4.Math数学对象

    console.log(Math.PI);//3.141592653589793
    console.log(Math.max(1,333,444,663,789));//789
    console.log(Math.max(1,333,'pink'));//NaN
    console.log(Math.max());//-Infinity

5.随机整数 random

   //随机整数
   function getRandom(min,max) {
      return Math.floor(Math.random()*(max-min-1))+min
    }
   //1.输入0~10之间的一个数字
    let random=getRandom(0,10);
    while (true) {//死循环
      let num=prompt('请输入0~10一个数字');
      if(num>random||num<random){
        alert('猜错了');
      }else{
        alert('你猜对了');
        break;
      }
    }
    //2.输入0~50 之间的一个数字,只有十次机会
    let ran=getRandom(0,50);
    for(let i=0;i<10;i++){
      let number=prompt('请输入0~50一个数字');
      if(number>ran||number<ran){
        alert('猜错了');
      }else{
        alert('你猜对了');
        break;
      }
    }

6.日期对象 new Date()

    let date = new Date();
    console.log(date);//没有参数,返回当前系统的时间
    //参数常用写法
    var date1 = new Date('2022-6-26 17:09');
    console.log(date1);
    //格式化 年 月 日
    console.log(date.getFullYear());//返回当前日期的年 2022
    console.log(date.getMonth() + 1);//返回月份小1个月 6
    console.log(date.getDate())//返回几号
    console.log(date.getDay())//周一返回1 周六返回6 周日返回0
    console.log(date.getTime());//毫秒
    // 写一个日期 2022.6.26 星期天
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    var da = date.getDate();
    var day = date.getDay();
    var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
    console.log('今天是' + year + '年' + month + '月' + da + '日 ' + arr[day]);

7.返回当前时间

function fn() {
      let time = new Date();
      let h = time.getHours();
      h = h < 10 ? '0' + h : h;
      let m = time.getMinutes();
      m = m < 10 ? '0' + m : m;
      let s = time.getSeconds();
      s = s < 10 ? '0' + s : s;
      return h + ':' + m + ':' + s;
    }
    console.log(fn());

8.返回当前总毫秒数 +new Date()

    let date=new Date();
    //1.通过 valueOf() getTime()
    console.log(date.valueOf());
    console.log(date.getTime());
    //2.简单写法 
    let date1= +new Date();
    console.log(date1);
    //h5 新增的
    console.log(Date.now());

9.总毫秒数换算成日期

function fn(times) {
      let date = new Date();
      let time1 = +new Date();
      let time2 = +new Date(times);
      let time = (time2 - time1) / 1000;
      let d = parseInt(time / 60 / 60 / 24);
      d = d < 10 ? '0' + d : d;
      let h = parseInt(time / 60 / 60 % 24);
      h = h < 10 ? '0' + h : h;
      let m = parseInt(time / 60 % 60);
      m = m < 10 ? '0' + m : m;
      let s = parseInt(time % 60);
      s = s < 10 ? '0' + s : s;
      return d+'天'+h+'小时'+m+'分钟'+s+'秒'
    }
    console.log(fn('2022-6-30 18:00:00'));

10.换算为年月日

 function fn(times) {
      let time1 = +new Date();
      let time2 = +new Date(times);
      let time = (time2 - time1) / 1000;
      let y = parseInt(time / 60 / 60 / 24 / 365);
      y = y < 10 ? '0' + y : y;
      let d =parseInt(time/60/60/24%365);
      d = d < 10 ? '0' + d : d;
      let h =parseInt(time/60/60%24);
      h = h < 10 ? '0' + h : h;
      let m =parseInt(time/60%60);
      m = m < 10 ? '0' + m : m;  
      let s =parseInt(time%60);
      s = s< 10 ? '0' + s : s;  
      return y+'年'+d+'天'+h+'小时'+m+'分'+s+'秒';
    }
    console.log(fn('2023-6-27 19:00:00'));

11.字符

11.1 字符对象
    let str='改革春风来了,春天来了';
    console.log(str.indexOf('春'));//3
    console.log(str.indexOf('春',3));//7 从第三处开始
    let str1='ooobvcxcooffsgg';
    console.log(str.length);//11
    console.log(str1[1]);//o
    let index=str1.indexOf('o');
    let num=0;
    while(index!=-1){
      console.log(index);
      num++;
      index=str1.indexOf('o',index+1)
    }
    console.log('次数为:'+num);
11.2 字符出现的位置和次数 indexOf
let str='aaavvveeertghjhj';
    let index=str.indexOf('a');
    let num=0;
    while(index!=-1){
      console.log(index);
      num++;
      index=str.indexOf('a',index+1);
    }
    console.log(num);
11.3 根据字符的位置返回字符
    // 1.charAt() 根据位置返回字符
    let str='andy';
    console.log(str.charAt(0));//a
    //遍历字符
    for(let i=0;i<str.length;i++){
      console.log(str.charAt(i));
    }
    //2. charCodeAt() 返回相应字符ASCII值,目的:判断用户按下那个键
    console.log(str.charCodeAt(0));//97
    //3.str[] H5
    console.log(str[0]);//a
11.5链接和截取,替换字符
   //1. concat 链接字符
    let str='andy';
    console.log(str.concat('red'));//andyred
    //2.substr('截取的起始位置','截取几个字符')
    let str1='隔岸观火那你佛法';
    console.log(str1.substr(2,2));//观火
    console.log(str1);//隔岸观火那你佛法
    //3.替换字符 replace('被替换的字符','替换后的字符')
    console.log(str.replace('a','*'));
11.6字符转换为数组 split
    //字符转换为数组 split
    let str='red blue pink';
    console.log(str.split(','));//[ 'red blue pink']
    let str1='1 2 3'
    console.log(str1.split('&'));//['1 2 3']
 

 

posted @ 2022-07-08 09:33  *hy*  阅读(96)  评论(0)    收藏  举报