开发者

Python全栈之学习JS(1)

目录
  • 1. js的数据类型
    • 1.1 js引入方式
    • 1.2 注释变量
    • 1.3 数据类型
  • 2. js类型转换_运算符
    • 2.1 强制转换_Number
    • 2.2 强制转换_String
    • 2.3 强制转换_Boolean
    • 2.4 自动类型转换_Number_Boolean_String三者之间转换
    • 2.5 js运算符
  • 3. js流程控制
    • 3.1 分支结构
    • 3.2 分支结构_switch_case
    • 3.3 循环结构
  • 4. js函数
    • 4.1 函数
    • 4.2 函数的调用
  • 总结

    1. js的数据类型

    1.1 js引入方式

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>js的引入方式</title>
    </head>
    <body>
        <!-- js的第一种引入方式 -->
        <!-- <script>
            alert("js的第一种引入方式")
        </script> -->
        <!-- js的第二种引入方式 -->
        <!-- <script src="myjs.js"></script> -->
        <!-- js的第三种引入方式 -->
        <!-- onclick单击事件 -->
        <div onclick="alert(11)" >点我1</div>
        <!-- js的第四种引入方式 -->
        <a href="javascript:alert('你点我了么?')">点我2</a>
    </body>
    </html>
    

    小提示:

    js三大对象
    1. 本地对象:js语法
    2. bom对象:浏览器相关的成员(针对于浏览器的控制)brower object model
    3. dom文档对象:关于html文件节点相关的数据、相关的值(针对于html的控制) document object model
    js是单线程的异步程序
    定时器是单线程的异步程序(例子)
    

    1.2 注释变量

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>注释/变量</title>
    </head>
    <body>
        <script>
            // ###1 注释分为两类: (1) 单行注释 (2) 多行注释
            // 我是单行注释
            /* 我是多行注释 */
            // ###2 变量
            /* var的用作是划分当前变量的作用域 不写var,默认声明全局的变量 */
            var a = 1;
            var a=1,b=2,c=3
            console.log(a);
            console.log(b,c)
            // ###3 变量的命名
            var $ = "特殊的变量名";
            var $abc = 111;
            console.log($);
            console.log($abc);
        </script>
    </body>
    </html>
    

    1.3 数据类型

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>数据类型</title>
    </head>
    <body>
        <script>
            /*
                数据类型: 分为两大类 (基本数据类型 + 引用数据类型)
                基本数据类型: Boolean , Number , String , undefined , null
                引用数据类型: Object(Array , function , Date ... )
            */
            // ###1. Boolean 布尔类型
            var a1 = true;
            var a1 = false;
            console.log( a1 , typeof(a1) )
            // ###2. Number 数字类型
            var num = 0b101;
            var num = 0o127;
            var num = 0xff;
            var num = 1000;
            var num = 3.13;
            var num = 3.13e2;
            // Infinity  无穷大
            var num = 3.13e999999999999999999999999999999999999;
            // -Infinity 负无穷大
            var num = -3.13e999999999999999999999999999999999999;
            console.log(num , typeof(num) )
            // NaN =>  not a number 不是一个数字
            /*
                1.NaN和任何数字计算都是NaN
                2.与NaN做比较,除了NaN!=NaN为真,剩下都是false
            */
            var num = 10 - "abc";
            var num = NaN + 1
            var num = NaN == NaN
            var num = NaN != NaN; // true 
            var num = NaN > 100;  // false
            var num = isNaN(NaN); // true
            console.log(num , typeof(num))
            // ###3.String 字符串类型
            // 单引号''
            var string = 'I love js';
            // 双引号""
            var string = "i love python very much";
            // 在转义字符前面加\,防止转义原型化输出
            var string = "我爱你,\\n 中国"
            console.log(string)
            // 反引号`` 1.支持跨行 2.解析变量
            // 1.支持跨行
            var string = `
            <ul>
                <li>111</li>
            </ul>
            `
            // 2.解析变量 ${变量名}
            var name = "赵沈阳";
            var string = `${name}`;
            console.log(string , typeof(string))
            // ###4.Object 对象类型
            // 1.定义一个空对象
            var obj = new Object()
            var obj = {}        
            console.log(obj,typeof(obj))
            // 2.js对象(字典格式)
            var obj = {"a":1,"b":2}
            console.log(obj , typeof(obj))
            // 3.js对象,可以在类外添加成员
            obj.name = "张三";
            console.log(obj , typeof(obj));
            // 4.js对象(数组格式)
            var arr = new Array();
            var arr = [];
            arr[0] = 10;
            arr[1] = 11;
            arr[2] = 12;
            var arr = [10,11,12,13];
            console.log(arr , typeof(obj));
            // ###5 function 函数类型(归属于object)
            function func(){
                console.log("我是函数");
            }
            func()
            console.log(func,typeof(func))
            // ###6 undefined 未定义类型
            var a;
            console.log(编程客栈a , typeof(a))
            // 注意: null 可以理解成关键字 (等价于python中None)
            var a = null
            console.log(a , typeHErvgof(a))
        </script>
    </body>
    </html>
    

    2. js类型转换_运算符

    2.1 强制转换_Number

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>强制转换 - Number</title>
    </head>
    <body>
        <script>
            // 1. parseInt 强制转换成整型 
            /* 要求: 必须数字开头; */
            var num = 1.934567; //1
            var num = "abc";    //NaN
            var num = "123";    //123
            var num = "123abc"; //123
            var num = "abc123"; //NaN
            var num = "1.34abc" //1
            var num = []        //NaN 
            var num = false        //NaN 
            var res = parseInt(num); 
            console.log(res ,typeof(res))
            // 2.parseFloat 强制转换成浮点型
            /* 要求: 必须数字开头; */
            var num = 100; //1
            var num = "abc";    //NaN
            var num = "123";    //123
            var num = "123abc"; //123
            var num = "abc123"; //NaN
            var num = "1.34abc"; //1.34
            var num = {};        //NaN 
            var num = true;
            var res = parseFloat(num); 
            console.log(res ,typeof(res))
            // 3.Number类型强转
            /* 要求:必须是存纯数字或者布尔类型*/
            var a = false
            var a = "123.456"; //123
            var res = Number(a)
            console.log(res ,typeof(res))
        </script>
    </body>
    </html>
    

    2.2 强制转换_String

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>强制转换 - String</title>
    </head>
    <body>
        <script>
            /*
                字符串的强转是在原有类型的两边套上引号,表达字符串类型;
            */
            var a = 100;
            var a = 4.89;
            var a = "abc";
            var a = [];
            var a = undefined;
            var a = null;
            var a = NaN;
            var res = String(a);
            console.log(res , typeof(res))
        </script>
    </body>
    </html>
    

    2.3 强制转换_Boolean

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>强制转换 - Boolean</title>
    </head>
    <body>
        <script>
            /*
                //布尔类型为假的七中情况:
                0 0.0 '' NaN undefined null false 
            */
            var a = false;
            var a = null;
            var a = 0;
            var a = 0.0;
            var a = '';
            var a = NaN;
            var a = undefined;
            // 注意点 空数组 空对象都是true
            var a = []; // true
            var a = {}; // true
            var res = Boolean(a);
            console.log(res , typeof(res));
        </script>
    </body>
    </html>
    

    2.4 自动类型转换_Number_Boolean_String三者之间转换

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>自动类型转换 Number Boolean String 三者之间的转换</title>
    </head>
    <body>
        <script>
            // 1.Number+Boolean
            var res = 10 + true;
            var res = 3.4 + true;
            var res = 10 + 3.1;
            console.log(res ,typeof(res))
            // 2.Number+Boolean+String (对于字符串来说 +号意味着拼接)
            var res = true + "100";
            var res = 100 + "101" + 100;
            console.log(res,typeof(res))
            // 3.除了+号,剩下的都可以做运算(必须是数值)
            var res = 100 - "101";
            var res = 100 - "99abc";
            console.log(res,typeof(res))
        </script>
    </body>
    </html>
    

    2.5 js运算符

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>js中的运算符</title></head><body>    <script>        // (1) ++ -- 递增,递减        // num++ 先赋值在自增        var num = 100;        var res = num++;        console.log(res , typeof(res));        var res = num++;        console.log(res , typeof(res));        // num++ 先自增在赋值        var num = 100;        var res = ++num;        var res = ++num;        console.log(res , typeof(res));        // (2) === !== (全等于,不全等于)比较两样东西1.比较值的大小 2.比较值的类型        var res = "1" == 1;        console.log(res , typeof(res));        var res = "1" === 1;        var res = "1" !== 1;        console.log(res , typeof(res));        // (3) && => and  ,  || => or   ,  ! => not        var num = 8        if(num > 5 && num <10){            console.log("ok1~");        }        if(num>10 || num < 3){            console.log("ok2~");        }        var num = 0        if(!num){            console.log("ok3~");        }        // (4) 三元(目)运算符 [ js: 表达式?真值:假值 ]    [ python :res = 正确 if 条件表达式 else 错误 ]        var age = 18;        var res = age >= 18 ? "成年人":"儿童";        console.log(res)    </script></body></html><!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>js中的运算符</title>
    </head>
    <body>
        <script>
            // (1) ++ -- 递增,递减
            // num++ 先赋值在自增
            var num = 100;
            var res = num++;
            console.log(res , typeof(res));
            var res = num++;
            console.log(res , typeof(res));
            // num++ 先自增在赋值
            var num = 100;
            var res = ++num;
            var res = ++num;
            console.log(res , typeof(res));
            // (2) === !== (全等于,不全等于)比较两样东西1.比较值的大小 2.比较值的类型
            var res = "1" == 1;
            console.log(res , typeof(res));
            var res = "1" === 1;
            var res = "1" !== 1;
            console.log(res , typeof(res));
            // (3) && => and  ,  || => or   ,  ! => not
            var num = 8
            if(num > 5 && num <10){
                console.log("ok1~");
            }
            if(num>10 || num < 3){
                console.log("ok2~");
            }
            var num = 0
            if(!num){
                console.log("ok3~");
            }
            // (4) 三元(目)运算符 [ js: 表达式?真值:假值 ]    [ python :res = 正确 if 条件表达式 else 错误 ]
            var age = 18;
            var res = age >= 18 ? "成年人":"儿童";
            console.log(res)
        </script>
    </body>
    </html>
    

    3. js流程控制

    3.1 分支结构

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>流程控制 -> 分支结构 </title>
    </head>
    <body>
        <script>
            var mashengni = "美女";
            //1.单项分支
            // if(mashengni == "美女"){
            //     alert("给他买好吃的~");
            // }
            //2.双项分支
            // if(mashengni == "野兽"){
            //     alert("给他一榔头~");
            // }else{
            //     alert("跳起来给他一榔头~");
            // }
            //3.多项分支
            // 不推荐判断条件连续比较,有可能失效;
            var salary = 1000;
            if(10000 < salary && salary < 12000){
                console.log("正常薪资范围~");
            }else if(12000 <= salary && salary < 15000){
                console.log("超过一般水平~");
            }else if(15000 <= salary && salary <18000){
                console.log("大神级毕业生~");
            }else if(salary >= 18000){
                console.log("王牌毕业生~");
            }else{
                console.log("回炉重生~")
            }
            //4.巢状分支
            var youqian = true;
            var youfang = true;
            if(youqian){
                if(youfang){
                    console.log("老子要嫁给你~!");
                }
            }
     编程客栈   </script>
    </body>
    </html>
    

    3.2 分支结构_switch_case

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>分支结构 : switch case </title>
    </head>
    <body>
        <script>
            var date = new Date();
            console.log(date);
            // 获取星期 getDay
            var week = date.getDay();
            console.log(week)
            week = "1"
            // 注意点: switch case中的判断(全等于): (1) 值的比较(2)类型的比较 全部符合才能满足条件;
            switch (week){
                case 1:
                    console.log('星期一');
                    break;
                case 2:
                    console.log('星期二');
                    break;
                case 3:
                    console.log('星期三');
                    break;
                case 4:
                    console.log('星期四');
                    break;
                case 5:
                    console.log('星期五');
                    break;
                case 6:
                    console.log('星期六');
                    break;
                default:
                    console.log("星期日!");
                    break;
            }
    
        </script>
    </body>
    </html>
    

    3.3 循环结构

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>分支结构 : 循环结构 </title>
    </head>
    <body>
        <script>
            // ### 1.for循环
            /*
                语法特征:
                    1号    2号     3号
                    for(初始值;判断条件;自增自减的值){
                        code1
                        code2..
                 http://www.cppcns.com   }
                    先执行1,2满足后执行代码体
                    然后执行3,2满足后在执行代码体
                    以此类推...
                    直到不满足条件终止循环;
            */
            // 打印 1~100
            for(var i = 1;i<=100;i++){
                console.log(i);
            }
            // 打印1~100 遇到50,自动跳过;
            for(var i = 1;i<=100;i++){
                if(i == 50){
                    continue;
                }
                console.log(i);
            }
            // ### 2.while 循环
            //遇到5,终止循环
            i = 0
            while(i<10){
                if( i == 5){
                    break;
                }
                console.log(i);
                i++;            
            }         
            console.log("<===============第一组===================>")
            // ### 3.for( var i in Iterable )  获取的是数组中的索引号;
            var arr = ["孟浩然","赵子龙","康乃馨","张飞","汪精卫"];
            for(var i in arr ){
                console.log(i);
                console.log(arr[i]);
            }
            console.log("<===============第二组===================>")
            // 获取的是js对象中的键
            var dic = {"a":"王同培","b":"马村你","c":"张宇"};
            for(var i in dic){
                console.log(i)       
                console.log(dic[i]) ;    
            }
            console.log("<===============第三组===================>")
            // ### 4.for( var i of Iterable ) 获取的是数组中的值; [等价于python中 for i in Iterable:]
            for(var i of arr){
                console.log(i);
            }
            console.log("<===============第四组===================>")
            // 注意点: for(var i of dic) 不能遍历js对象[字典] error
            /*
            var dic = {"a":"王同培","b":"马村你","c":"张宇"};
            for(var i of dic){
                console.log(i)     
            }
            */
            // 字符串的遍历:
            for(var i of "abcdefg"){
                console.log(i)
            }
        </script>
    </body>
    </html>
    

    4. js函数

    4.1 函数

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>函数</title>
    </head>
    <body>
        <script>
            func1()
            // ###1 函数
            // 方式一 普通函数 (存在预加载机制,提前把函数加载到内存中,然后代码整体在执行)
            func1()
            function func1(){
                console.log(111);
            }
            // 方式二 匿名函数(匿名函数没有预加载价值,必须先定义在调用)
            // func2() error
            var func2 = function(){
                console.log('我是func2~');
            }
            func2();
            // 方式三 不推荐 (了解)
            // var func3 = new Function("alert('我是func3~');alert('woshi3333');");
            // console.log(func3,typeof(func3));
            // func3();
            // var func4 = new Function("x","y","alert(x+y)");
            // func4(5,6);
            // 方式四 闭包函数
            function func5(){
                var a = 100;
                function func6(){
                    console.log(a,"<===>");
                    return "我是闭包函数";
                }
                return func6;
            }
            func = func5();
            res = func();
            console.log(res);
            // 方式五 箭头函数
            function mysum(x,y){
                returHErvgn x+y;
            }
            res = mysum(5,6)
            console.log(res,"<=======11122233=======>");
            var mysum = (x,y)  =>  {return x+y;}        
            var res = mysum(5,6);
            console.log(res,"========3334444=========");
            // ###2 函数参数 (普通位置参数,默认参数)
            // js中的形参实参不匹配不会报错
            function func7(a,b,c=3){
                console.log(a,b,c);
            }
            func7(10,11);
            func7(10,11,12);
            func7(10,11,12,13);
            console.log("<==============================>")
            // arguments 自动收集所有的实参
            // 计算任意个数值的累加和;
            function func8() {
                // console.log(a,b)
                // console.log(arguments)
                var total = 0;
                for(var i of arguments){
                    total += i;
                    console.log(i);
                }
                return total;
            }
            res = func8(1,100,2,3,4,5,56,6);
            console.log(res);
        </script>
    </body>
    </html>
    

    4.2 函数的调用

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>函数的调用</title>
    </head>
    <body>
        <script>
            function func(){
                console.log("函数正在执行 ... ");
            }
            // 1.正常调用
            func();
            // 2.函数的立即执行
            (function func2(){
                console.log("函数正在执行2 ... ")
            })();
            // 3.匿名函数的立即执行
            (function(){
                console.log("匿名函数正在执行3 ... ")
            })();
            // 4.其他立即执行的方法;
            !function(){
                console.log("我在执行4 ... ");
            }();
            ~function(){
                console.log("我在执行5 ... ");
            }();
    
        </script>
    </body>
    </html>
    

    总结

    本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜