js语言基础练习

1.js最初始体验

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <!--<div onclick="alert('我是行内式')">你好</div>-->
    <!--<script src="tool.js"></script>-->
    <script type="text/javascript">
        //内嵌式
        alert("我是内嵌式");
        prompt("请输入:");
        confirm("你好吗?");

        //输出语句
        console.log("我是控制台输出");
        console.error("我是错误");//了解
        console.warn("我是警告");//了解

        document.write("<h1>我是h1标签</h1>");//页面输出内容而且识别标签

        /**
         *
         * @param a
         * @param b
         * @returns {number}
         */
       function fn(a,b){
           return 111;
       }


    </script>
</body>
</html>

2.变量

a)变量命名

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>

   var _$1 = 1;
   var 我爱你 = "I love you!"
   var top = 1;
   alert(top);
   alert(我爱你);
   alert(name);
   // alert(break);

    var aaa = 1;

    var bbb;
    bbb = 1;

    var bool;
    bool = true;

   var name = "张三";
   console.log(name);
   name = 18;
   console.log(name);

    var a, b, c;
    var a;b;c;


</script>
</body>
</html>

b)变量交换

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>

    //需求:交换两个变量
    //步骤:
    //1.把a交换给b
    //2.把b交换给a
//    var a = 1;
//    var b = 2;
//    console.log("a:"+a+"---"+"b:"+b);
//    //1.把a交换给b
//    b = a;
//    //2.把b交换给a
//    a = b;
//    console.log("a:"+a+"---"+"b:"+b);

    //需求:交换两个变量
    //步骤:
    //0.定义一个中间值
    //1.先把a存储进中间值中,把b交换给a
    //2.把中间值交换给b
//    var temp = 0;
//    var a = 1;
//    var b = 2;
//    console.log("a:"+a+"---"+"b:"+b);
//    //1.先把a存储进中间值中,把b交换给a
//    temp = a;
//    a = b;
//    //2.把中间值交换给b
//    b = temp;
//    console.log("a:"+a+"---"+"b:"+b);

//    var a = "aaa";
//    var b = "bbb";
//        console.log("a:"+a+"---"+"b:"+b);
//    var temp = a;
//    a = b;
//    b = temp;
//        console.log("a:"+a+"---"+"b:"+b);



    //难点
    //需求:交换两个变量(数值型)而且不能用中间值。
    //步骤:(求两个数的和,然后减去其中一个交换给另一个)
    //1.求和。
    //2.利用和减去其中一个交换给本身变量
    //3.减去刚才的一个交换给另一个

//    //1.求和。
//    var a = 10;
//    var b = 20;
//    var sum = a + b;
//    console.log("a:"+a+"---"+"b:"+b);
//    //2.利用和减去其中一个交换给本身变量
//    b = sum - b;
//    //3.减去刚才的一个交换给另一个
//    a = sum - b;
//    console.log("a:"+a+"---"+"b:"+b);

    //1.求和。
    var a = 10;
    var b = 20;
    console.log("a:"+a+"---"+"b:"+b);
    a = a + b;
    //2.利用和减去其中一个交换给本身变量
    b = a - b;
    //3.减去刚才的一个交换给另一个
    a = a - b;
    console.log("a:"+a+"---"+"b:"+b);


</script>
</body>
</html>

3.数据类型

a)数据类型

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>

   var str = "abc";
   var num = 18;
   var bool = true;
   var bbb = null;
   var aaa;

   console.log(typeof str);
   console.log(typeof num);
   console.log(typeof bool);
   console.log(typeof(aaa));
   console.log(typeof(bbb));


    //number
    // 进制转换   值 = 位值*进制的(位置-1)次方+位值*进制的(位置-1)次方+位值*进制的(位置-1)次方+...........
   var num1 = 0.1;
   var num2 = 0.2;
   console.log(num1+num2);
   console.log(0.07*100);

   console.log(Number.MAX_VALUE);
   console.log(Number.MIN_VALUE);

   console.log(1/0);
   console.log(-1/0);

   console.log("aaa"/10);
   console.log(undefined-1 == NaN);

   console.log(isNaN("aaa"));
   console.log(isNaN(123));
   console.log(isNaN(NaN));


    //string
   var str1 = "abc";
   var str2 = 'cde';
   //var str3 = "';
   var str4 = 'asdf"asdf"asdf'
   var str5 = "afads'lkfhasld'fjk";
   var str6 = "adfasdlfjka"ldskf";
   var str7;
   str7 = "anc";
   str7 = "adfsadfasdf";

   console.log(str4);
   console.log("
"+str5);
   console.log(str6);
   console.log("我爱你"+str1+"中国");

   //+和加法不一样。对于字符串来说,+是连接符。
   console.log("aaa"+"bbb");
   console.log(111+111+"bbb");


    //boolean
   console.log(true);
   console.log(false);
   var a  = 1;
   if(a){
       alert(a);
   }

    //undefined 和 null
    console.log(undefined == null);
    console.log(undefined === null);
    console.log(undefined+10);
    console.log(null+10);



</script>
</body>
</html>

b)数据类型转换

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>
    //转换成字符串
   var bool = true;
   var num = 111;
   var aaa;
   var bbb = null;

   console.log(typeof(bool+""));
   console.log(typeof(num+""));
   console.log(typeof(aaa+""));
   console.log((aaa+""));
   console.log(typeof(bbb+""));

   console.log(typeof(String(bool)));
   console.log(typeof(num.toString()));


    //转换成数字
   var str = "11";
   var bool = true;
   console.log(typeof (str-0));
   console.log(typeof (bool-0));
   console.log(typeof (str*1));
   console.log(typeof (bool*1));
   console.log(typeof (str/1));
   console.log(typeof (bool/1));
   console.log(typeof typeof (bool/1));  //数据类型是用string定义的

   console.log(typeof Number(str));
   console.log(typeof Number(bool));


   var str2 = "12.34abc";
   var str3 = "12.34";
   console.log(parseInt(str2));
   console.log(parseFloat(str2));
   console.log(Number(str3));


    //布尔类型转换
    var date = new Date();    //

    console.log(Boolean(0));
    console.log(Boolean(""));
    console.log(Boolean(null));
    console.log(!!1);
    console.log(!!"abc");
    console.log(!!date);



</script>
</body>
</html>

4.操作符优先级

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>
   (false || true) && !(false && true);
   true && true
   var bool = ((4 >= 6) || ("" != "阿凡达")) && !(((12 * 2) == 144) && true);

   console.log(bool);


   var num  = 10;
   // 5 == num / 2 && (2 + 2 * num).toString() === "22"
   // 5 == 5 && "22"==="22"

   if(5 == num / 2 && (2 + 2 * num).toString() === "22") {
       console.log(true);
   }


   var a = 1;
   var b = 2;
   a++;
   var num = ++a + (a++) + a + (++b) + b++;
             //  3 + 3 + 4 + 3 + 3;

   console.log(num);

   var aa  =   0&&1;
   alert(aa)
   var bb =  1&&0;
   alert(bb);
   var cc =  1&&10;
   alert(cc);


    console.log(0||1);
    console.log(1||0);
    console.log(1||5);
    console.log(5||1);

    var a = 1 && 2 && 3;
    console.log(a);
    var b = 0 && 1 && 2;
    console.log(b);
    var c = 1 && 0  && 2;
    console.log(c);

    var a = 0 || 1 || 2;

    var b = 1 || 0 || 3;

    console.log(a),console.log(b);


    var a = 3  &&  0 || 2;
    var b = 3 || 0 &&  2;
    var c= 0 || 2 && 3;
    alert(a),alert(b),alert(c);


var a = 1+1&&3;
var b = 0 && 1+1;
var c = 1 ||  2 && 3-1;
alert(a);alert(b);alert(c);


</script>
</body>
</html>

5.if判断

a)

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>

    if(true){
        alert(1);
    }

    if(false){
        alert(2);
    }else{
        alert(3);
    }

    if(false){
        alert(4);
    }else if(false){
        alert(5);
    }else if(false){
        alert(6);
    }else if(false){
        alert(7);
    }else if(true){
        alert(8);
    }else if(false){
        alert(9);
    }else{
        alert(10);
    }


    //switch底层用的是===比较
    switch ("111"){
        case 111:
            alert(111);
            break;
        case 222:
            alert(222);
            break;
        case 222:
            alert(333);
            break;
        default :
            alert("都不是!");
    }



</script>
</body>
</html>

b)

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>

    //需求:输入名人,弹出他所参演的电视剧!
    //步骤:
    //1.页面输出,后台获取。
    //2.判断输出的人物是谁并给出电视剧。
    //3.如果没有这个人,那么弹框警示!
   var str = prompt("请输入一位名人:");

   if(str === "陈道明"){
       alert("陈老师参演过:《康熙王朝》《楚汉传奇》《江山风雨情》...");
   }else if(str === "吕超"){
       alert("吕老师参演过:《雷雨》负责里面的雷雨......");
   }else{
       alert("这货谁,换一个,不认识!");
   }



    //需求:弹框显示今天是星期几。
    //步骤:
    //1.获取当天是星期几。
    //2.判断星期几,弹簧弹窗显示

   var date = new Date();
//    console.log(date.getDay());//礼拜日给我们的值将是0
   var num = date.getDay();

   switch (num){
       case 0:
           alert("星期日");
           break;
       case 1:
           alert("星期一");
           break;
       case 2:
           alert("星期二");
           break;
       case 3:
           alert("星期三");
           break;
       case 4:
           alert("星期四");
           break;
       case 5:
           alert("星期五");
           break;
       case 6:
           alert("星期六");
   }


    //需求:百分制转换成优良中可差。
    //思路1:获取值,然后判断在90-100....80-90...
    //思路2(难点):获取值,然后除以10取整,==10满分,==9优,==8良,==7中,==6可,其他差!
    //步骤:
    //1.获取值,然后除以10取整。
    //2.判断

    var num = prompt("输入成绩:");
    num = parseInt(num/10);

    switch (num){
        case 10:
            alert("满分");
            break;
        case 9:
            alert("");
            break;
        case 8:
            alert("");
            break;
        case 7:
            alert("");
            break;
        case 6:
            alert("");
            break;
        default :
            alert("差!!!");
    }


</script>
</body>
</html>

6.for循环

a)

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>
    var i=1;
    for(;i<=10;i++){
        console.log(i);
//        i++;
    }

   console.log(i);

    // 死循环
   // for(;;){
   //     alert(1);
   // }

</script>
</body>
</html>

b)

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>

   // 1 打印1到100
  for(var i=1;i<=100;i++){
      console.log(i);
  }

   // 2 打印1到100的和
   //计数器思想
  var sum = 0;
  for(var i=1;i<=100;i++){
//       sum = sum+i;
      sum += i;
  }
  console.log(sum);

    // 3 求1-100之间所有数的和、平均值
   var sum = 0;
   for(var i=1;i<=100;i++){
       sum+=i;
   }
   var avg = sum/(i-1);
   console.log(avg);

   // 4 求1-100之间所有偶数的和、所有奇数的和
    var sumOdd = 0;//奇数和
    var sumEven = 0;//偶数和

    for(var i=1;i<=100;i++){
        //判断如果是奇数加到sumOdd,如果是偶数加到sumEven
        if(i%2 === 1){
            sumOdd += i;
        }else{
            sumEven += i;
        }
    }
    console.log(sumOdd);
    console.log(sumEven);

</script>
</body>
</html>

c)

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <script>
//        5 本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少?
        //需求:本金10000,利率千分之3,求5年本息和。
        //步骤:
        //1:利用for循环,把每年的利息添加到本金中作为第二年的本金
        //2:一共循环五次
       var money = 10000;
       var rote = 0.003;
       for(var i=1;i<=5;i++){
//            money = money+money*rote);
//            money = money*(1+rote);
//            money *= (1+rote);
           money *= 1+rote;
       }
       alert(money);


//        6 有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对?
//        兔子的规律为数列,1,1,2,3,5,8,13,21

                   // n1 n2 n3=n1+n2,n4=n2+n3,n5=n4+n3......
        //斐波那契数列:1,1,2,3,5,8,13,21,34,55,89,144...........


        //需求:求斐波那契数列第12项是多少?
        //思路:设置两个变量,分别代表第一个和第二个数值,然后从第三项开始,当前项等于前两项之和。在赋值之前,先把后一项保存起来,赋值完毕在把保存值赋值给第一项。
        //步骤:
        //1.定义两个变量和一个中间值
        //2.然后利用循环交换变量和以及变量
        //3.直接打印n2

        //1.定义两个变量和一个中间值
        var num1 = 1;
        var num2 = 1;
        //2.然后利用循环交换变量和以及变量(循环次数 = 从第三项开始循环,到第12项结束)
        for(var i=3;i<=12;i++){
            var temp = num2;
            num2 = num1+num2;
            num1 = temp;
//            num1 = num2-num1;
        }
        //3.直接打印num2
        alert(num2);

    </script>
</body>
</html>

d)打印正方形,三角形

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>

   document.write("")
   document.write("")
   document.write("☆<br>")

   document.write("")
   document.write("")
   document.write("☆<br>")

   document.write("")
   document.write("")
   document.write("")
   document.write("<br>");

    //需求:打印宽9,长9的正方形。
//for(var k=1;k<=9;k++){
    for(var j=1;j<=9;j++){
        for(var i=1;i<=9;i++){
            document.write("");
        }
        document.write("<br>");
    }
//    document.write("<br>");
//}


document.write("<br>");

    //需求:打印三角形(外循环控制行,内循环控制列)
    for(var j=1;j<=9;j++){
        for(var i=1;i<=j;i++){
            document.write("");
        }
        document.write("<br>");
    }


</script>
</body>
</html>

e)打印乘法表

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <table border="1">
        <tr>
            <td>1*1=1</td>
        </tr>
        <tr>
            <td>1*2=2</td>
            <td>2*2=4</td>
        </tr>
        <tr>
            <td>1*3=3</td>
            <td>2*3=6</td>
            <td>3*3=9</td>
        </tr>
    </table>



<script>

   for(var i=1;i<=9;i++){
       for(var j=1;j<=i;j++){
           document.write(i+"*"+j+"="+i*j+"  ");
       }
       document.write("<br>");
   }

    document.write("<table border='1'>");

    //在这里面利用for循环输出tr和td...

    document.write("</table>");



</script>
</body>
</html>
原文地址:https://www.cnblogs.com/lovely7/p/7124275.html