web前端中js内容、方法以及示例详解第二篇

85 阅读1分钟

Js(二)

1.操作符

微信截图_20220330170513.jpg

由于下面的内容和python相似,所以只挑重要的详细说一下

算术运算

定义方式除了var以外还有一种方式let,这种方式更为严格,如果var声明了相同的变量,则后面赋的值会把前面赋的值覆盖掉,而let相同的变量只能定义一次,否则会报错。

一次性定义多个值:

var a=1,b=2,c="3";

一开始不给赋值,后面再赋值也行

var a,b,c;
a=1
b=2
c="3"
//%:求余数
//当不是数字的运算时,"+"一旦有string类型就是拼接,最终结果为字符串
//而 - / % * 则是自动隐式转换为数字去计算

如果无法隐式转换成数字,就会输出'NaN'

<script>
	var a = 'c';
	var b = 8;
</script> 

赋值运算符

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

        // var a = 8;
        // var b = a++;
        // console.log(a,b)
        // //得到的是9和8而不是8和9,因为这时候分两步,第一步: b=a  第二步:a=a+1
        // //++在后面是先赋值,再加一,++在后面是先加一,后复赋值
        // var c = 1;
        // var d = ++c;
        // console.log(c,d)
    </script>
</body>
</html>

比较运算符

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script>
        var a = '8';
        var b = 8;
        if(a === b){
            alert('hello')
        }else {
            alert('python')
        }
        //上面输出python
        //全等于时不但数据要一样,而且类型也要一样
        //如果是"=="的话就只比值,不比对类型。
    </script>
</body>
</html>

逻辑运算符

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script>
        //&& 与 两边都为真结果才为真,其他都是假
        //|| 或 两边都为假结果才为假,其他都是真
        //!  非 取反,真变假,假变真
        //当两边不一定是布尔值时
        //&& 遇到假就停 不会进行数据转换
        //|| 遇到真就停 不会进行数据转换
        //!  隐式类型转换,将后面的数据先转换为布尔值在取反
        var a = true && true && false   //输出为假
        var b = 0 || 0 || 2     //输出为2
        var c = 2 && -1 && ''   //输出为空
        var d = 0 && null       //输出为0,因为第一个条件就不符合了
        //先判断2 && -1发现为真,然后往下判断-1 && ''发现为假,然后输出空
        //"或"是一直判断下去,直到有真才输出真的值
        //"与"是一直判断下去,直到有假才输出假的值
        //逻辑运算符不是判断值是否相等的,只判断是不是为真
    </script>
</body>
</html>

以下在进行判断时为假:

1.0

2.null

3.undefined

4.NaN

5.''(空字符串)

6.false

2.控制流程

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script>
        var a = 0;
        // if (a >= 0){
        //     alert("真")
        // }else {
        //     alert("假")
        // }
        // 三目运算:条件? 真语句: 假语句
        // a>=0? alert("真"):alert("假")

        // var x = 8;
        // if (x>50){
        //     alert('x>50')
        // }else if(x>30){
        //     alert('x>30')
        // }else if(x>=10){
        //     alert('x>=10')
        // }else {
        //     alert("hello world")
        // }
        
        //switch速度会比if快一些
        var day = 3
        switch (day){
            case 1:
                document.write("1")
                //document.write()是写在终端(网页)内,不写在控制器内
                //console.log()是写在控制器内
                break
            case 2:
                document.write("2")
                break
            case 3:
                document.write("3")
                break
            case 4:
                document.write("4")
                break
        }
    </script>
</body>
</html>

3.循环

for循环

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    //循环长这样:
    // for(条件){
    //     执行语句
    // }
    //如果外面没有定义变量,for内也可以定义
    //和c语言的for循环有一定的类似性
    for (var i=1; i<=9; i++){
        for (var j=1;j<=i ;j++){
            var b = i*j
            document.write(i+"*"+j+"="+b+'&emsp;')//拼接
        }
        document.write("<br>")
    }
</script>
</body>
</html>

循环实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        li{
            width: 100px;
            height: 100px;
            background: red;
            margin: 10px;
        }
    </style>
</head>
<body>
<ul>
    <li>0</li>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
</ul>
<script>
    //点击哪个就弹窗出来对应的数字,可以重复点击,此方法使用循环
    var aLi =  document.getElementsByTagName('li');
    var len = aLi.length;
    for (var i = 0; i<len; i++){
        aLi[i].wwwww = i      //保存值
        aLi[i].onclick = function () {
            alert(this.wwwww)
        }
    }
</script>
</body>
</html>

微信截图_20220330211132.jpg

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        li{
            width: 100px;
            height: 100px;
            background: red;
            margin: 10px;
        }
    </style>
</head>
<body>
<ul>
    <li>0</li>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
</ul>
<script>
    //点击哪个就弹窗出来对应的数字,不用循环的方法,但是如果事件多的话就不合适了
    var aLi =  document.getElementsByTagName('li');
    aLi[0].onclick = function (){
        alert(0)
    }
    aLi[1].onclick = function (){
        alert(1)
    }
    aLi[2].onclick = function (){
        alert(2)
    }
    aLi[3].onclick = function (){
        alert(3)
    }
    aLi[4].onclick = function (){
        alert(4)
    }
</script>
</body>
</html>

while循环

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

</head>
<body>
    <script>
        var i=0
        while (i<10){
            console.log(i);
            i++;
        }
    </script>
</body>
</html>

do while循环

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

</head>
<body>
    <script>
        var i=0
        do{
            console.log(i);
            i++;
        }
        while (i<10)
    </script>
</body>
</html>

4.字符串方法

string 字符串
          索引,下标,偏移量---从0开始
          str[index];通过索引取字符串
          str.length;获取长度 空格也算
          value.toString();--转换字符串
          str.substring();--截取字符串会比较参数值的大小,小的参数在前面,负数变为0
          str.slice()--切片,不会交换位置,负数从右到左数
          str.split()--字符串切割,返回数组
          str.indexOf --查找字符串,成功返回索引,反之返回-1 ===>相当于python中的find
          str.toUppweCase()--全部转换大写
          str.toLowerCase()--全部转换小写
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
        var str="wo shi shui";
        console.log(str.length);
        console.log(str[3]);

        //执行以下两行代码输出的东西不变,所以可以发现string方法不能改变值
        //string类型不可变
        str[0] = "Q";
        console.log(str);

        //将其他类型的数据转化为字符串
        var a = 8;
        alert(typeof a.toString())

        //substring遵循左闭右开原则
        var str1 = "wo shi shui wo zai na";
        //截取字符串会自动比较参数值的大小,小的参数在前面,大的参数在前面,这点和python不一样
        //下面两行代码输出结果一样
        console.log(str1.substring(3,9));
        console.log(str1.substring(9,3));
        //负数变为0 ===>(0, 9)
        console.log(str1.substring(-3,9));

        //slice遵循左闭右开原则
        console.log(str1.slice(3,9));
        console.log(str1.slice(9,3));  //输出为空,python也是为空,所以不能倒着写
        console.log(str1.slice(-5,-1));


        console.log(str1.split('i'));
        alert(str1.indexOf('h',5))//这里的数字意思是从几号位置开始找
</script>
</body>
</html>

微信截图_20220330215725.png

5.数组(列表)方法

微信截图_20220330221407.jpg

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script>
        var arr =["april",'班长','有你','大当家','七叶'];

        //索引取值
        console.log(arr[3]);

        //赋值(改变值)
        arr[4] = "忧游";
        console.log(arr);
        //如果一共5个数据,你修改第八个,也就是跳过一些位置会输出:
        //['april', '班长', '有你', '大当家', '七叶', 空 ã3, '忧游']

        //添加
        arr.push("思雨",'三月')  //可以添加多个
        arr.unshift("眠",'鲨鱼')

        //删除,不能指定,括号里不能填数字
        console.log(arr.pop())
        console.log(arr.shift())

        //指定删除
        console.log(arr.splice(3)); //保留前三个,剩下全部删除,如果里面的数字大于总数则一个都不会删除
        console.log(arr.splice(2,2));  //从2号位置开始删除2个,但是不包含2号元素
        console.log(arr.splice(1,2,"哈哈"));//从1号位置开始删除两个,然后再加上’哈哈‘,不删除只添加的话就把2改为0

        // 另一种定义数组方式
        var arr11 = Array();  //定义空数组
        arr11[0] = 'qqq';   //给空数组添加值,数组没有互异性或者去重功能,所以值可以重复

        //排序
        var arr2 = [1,5,3,6,3,2,2,8,9]
        var arr3 = arr2.sort()
        var arr12 = arr2.sort().reverse() //逆序

        //拼接
        var arr5 = ["思",'月']
        var q = arr5.join("和")
        console.log(q)
        
        //多拼接
        var arr1 = [1,2,3]
        var arr4 = [4,5,6]
        var arr7 = [7,8,9]
        //如果直接用"+"拼接则arr1,arr4,arr7之间没有逗号,最后出来的是字符串不是数组
        var arr6 = arr1.concat(arr4).concat(arr7)
        console.log(arr4)
    </script>
</body>
</html>

6.数字方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script>
        //转化为数字(number)类型
        var a = '888';
        console.log(typeof Number(a))
        var b = 'aa';
        console.log(typeof Number(b));

        //下面这一串代码会随机得到0-1之间的一个浮点数
        console.log(Math.random())

        //可以这么写,出来的就是他输入的倍数:
        console.log(Math.random()*100)

        //只取整数部分
        console.log(Math.floor(Math.random()*100))

        //保留两位小数
        console.log(Math.random().toFixed(2))

        //转化为数字类型,遇到不是数字的就会停,
        var c = '88afevafw123debr';
        console.log(typeof parseInt(c))
        //parseFloat()可以使小数部分转化为数字类型,遇到不是数字的就停,并输出已转化的
        //parseFloat()是从整数部分直到小数都转化,如果整数部分有不是数字的东西也立马就停了,轮不到小数部分
        var d = '1325ww6.124353'
        console.log(parseFloat(d))
    </script>
</body>
</html>