zoukankan      html  css  js  c++  java
  • 值类型之间的相互转化,运算符,if条件判断,循环,函数

    值类型之间的相互转化

    number | string | boolean    
    一.转换为boolean=>Boolean(a);
    var num = 10;
    var s = '123';
    var b1 = Boolean(num);
    var b2 = Boolean(s);
    console.log(b1,b2); //true true
    var num1 = 0;
    var s1 = "";
    var b3 = Boolean(num1);
    var b4 = Boolean(s1);
    console.log(b3,b4); //false false
    // 后期我们会在if分支结构中的判断以及循环中的判断中使用boolean类型,
    // 以上两种情况下, 系统都会把非boolean的数据自动转换为boolean
    // 0 | "" | null | undefined | NaN => false, 其他都会转化为true
    
    二.转换为数字类型 Number(a) | parseInt(a) | parseFloat(a) | +
    ①Number(a)
    console.log(Number(false), Number(true), true + true);
    //0 1 2
    
    var s1 = "123";
    var s2 = "3.14";
    var s3 = "123abc";
    var s4 = "3.14.15";
    var s5 = "abc123";
    console.log(Number(s1), Number(s2), Number(s3), Number(s4), Number(s5));
    // 123 3.14 NaN NaN NaN
    
    ②parseInt(a) parseFloat(a)
    var s1 = '3.14.15';
    var n1 = parseInt(s1);
    var n2 = parseFloat(s1);
    console.log(n1,n2); //3 3.14
    
    ③ +
    //常用转化的字符串一定是一个合法的数字字符串形式(s1, s2)
    var s1 = '123';
    var s2 = '3.14';
    var n1 = +s1;
    var n2 = +s2;
    console.log(n1,n2); //123 3.14
    
    非数字:NaN  // 当一个其他类型转化为数字类型的产物
    // 任何判断一个结果是否是NaN => isNaN(运算)
    var s = 'abc';
    var n = +s;
    console.log(isNaN(n)); //true
    
    三.转换为字符串类型 String(a) | .toString() | "" + 
    var n1 = 123;
    var s1 = String(n1);
    var s2 = n1.toString();
    var s3 = "" + n1;
    console.log(s1,s2,s3); //'123' '123' '123'
    var s4 = 123..toString();
    // ..语法第一个.小数点,第二个.方法的调用
    
    // 弱语言类型
    //优点考虑字符串类型
    console.log(3 + "5");  // "35"
    console.log(3 - "5");  // -2
    
    // 总结:
    // 1.最快转化为数字类型 +"123" | +true
    // 2.最快转化为字符串形式 "" + 123 | "" + true

    运算符

    /*
    算数运算符:+ - * / % ++ --
    赋值运算符:+= -= *= /= %=
    比较运算符:> < >= <= == === != !==
    逻辑运算符:&& || !
    三目运算符:结果 = 条件表达式 ? 结果1 : 结果2;
    */
    
    一.算数运算符
    // js中不区分整形和浮点型, 结果为什么就是什么
    var res = 5 / 2;  // 2.5
    
    // 任何正整数对n取余 结果为: [0, n-1]
    
    // num++ | ++num => num = num + 1;  => 自增1
    // ++在后先赋值再自增 | ++在前先自增再赋值
    var num = 10;
    var r1 = ++num;
    console.log(r1);  // ++num => r1=11 | num++ => r1=10
    console.log(num);  // 11
    
    二.赋值运算符
    x += 10; // => x = x + 10
    
    三.比较运算符
    var x = 123;
    var y = '123';
    console.log(x == y); // 只做值比较 => true
    console.log(x === y); // 全等: 值与类型都必须相等 => false
    
    
    四.逻辑运算符
    // 逻辑与: 条件1 && 条件2 => 全为真则真,否则为假
    // 逻辑或: 条件1 || 条件2 => 全为假则假,否则为真
    // 逻辑非: 非真即假,非假即真
    
    // 逻辑与的短路效果, 条件1为假, 条件2就不会被执行
    var a = 10;
    var b = 20;
    var c = '10';
    var res = a === c && b++;
    console.log(res,b) //false 20
    
    var res = a == c && b++;//res结果即b的结果,b++先赋值后自增
    console.log(res,b) //20,21
    
    // 逻辑或的短路效果, 条件1为真, 条件2就不会被执行
    var res = a == c || b++;
    console.log(res,b) //true 20
    
    var res = a === c || ++b; //res结果即b的结果,++b先自增后赋值
    console.log(res,b) //21 21
    
    
    五.三目运算符
    // 三目运算符:结果 = 条件表达式 ? 结果1 : 结果2;
    // 条件满足, 执行:前的结果1, 否则执行:后的结果2
    var x = 10;
    var y = '10';
    var res = x == y ? 'x与y的值相等':'x与y的值不等';
    console.log(res) //x与y的值相等

    if条件判断

    // 三种弹出框
    // alert(123);  // 普通弹出框
    // var res = prompt("请输入:"); // 输入框, 得到输入的字符串内容
    // var res = confirm("请选择"); // 确认框, 得到true | false
    
    // +做类型转换
    var salary = +prompt("请输入工资:");
    if (salary > 88888) {
        console.log("开始还账!");
        salary -= 50000;
    
        console.log("开始购物 30000!");
        salary -= 30000;  // 最少剩8888
    
        if (salary > 10000) {
            console.log("旅游!");
        } else if (salary > 9000) {
            console.log("花200学习!");
            salary -= 200;
        } else {
            console.log("吃土!")
        }
    
    } else {
        console.log("要求提薪");
    }
    // if可以省略else if, 也可以省略else
    // if可以嵌套
    // if(条件){ 逻辑体 } else if(条件){ 逻辑体 } else{ 逻辑体 }

    循环

    // 循环比较
    // 1.for: 解决已知循环次数的
    // 2.while: 可以解决所有for循环可以解决的问题,也可以解决不知道循环次数但知道结束条件
    // 3.do...while: 无论条件是否满足,循环体都会被执行一次
    一.for循环
    for (循环变量①; 条件表达式②; 循环变量增量③) {
        代码块④;
    }
    eg:
    for(var i = 0; i < 5; i++){
        console.log('打气!')
    }
    //① ②④③ ... ②④③ ②
    
    二.while循环
    while (条件表达式) {
        代码块;
    }
    eg:
    var j = 0;
    while(j < 5){
        console.log('打气');
        j++;
    }
    
    三.do..while 循环
    do {
        代码块;
    } while (条件表达式);
    eg:
    var k = 0;
    do{
        console.log('打气!');
        k++;
    }while(k < 5);
    
    // break:结束本层循环
    var x = 0;
    while(x < 5){   //打印0,1,2
        if (x > 2) {
            break;
        }
        console.log(x);
        x++;
    }
    // continue:结束本次循环进入下一次循环
    var x = 0;
    while(x < 5){   //打印0,1,3,4
        if (x == 2){
            x++;
            continue;
        } 
        console.log(x);
        x++;
    }

    函数

    // js函数的重点: 如何给事件提供功能
    
    // 1.函数的定义
    // function 函数名(形参列表) {
    //      函数体;
    // }
    
    // 2.函数的调用
    // var res = 函数名(实参列表);
        eg:
        //fn1();
        function fn1() {
            console.log('函数fn1')
        }
        fn1(); //定义前后都可以调用
    
    // 3.函数的参数
    // i.个数不需要统一
        function fn1(a,b) {
            console.log(a,b)
        }
        fn1(1,2); //1 2
        fn1(1); //1 undefined
        fn1(1,2,3); //1 2
    
        fn2("abc");
        function fn2() {  // 不需要参数就不接收, 需要就接收
            console.log("自己玩")
        }
    // ii.可以任意位置具有默认值
        function fn3(a,b=1,c,d=2) {
            console.log(a,b,c,d);
        }
        fn3(); //undefined 1 undefined 2
        fn3(6); //6 1 undefined 2
        fn3(6,8); //6 8 undefined 2
        fn3(6,null,8); //6 null 8 2 
    // iii.通过...语法接收多个值
        function fn4(...arr) {
            console.log(arr)
        }
        fn4(); //[]
        fn4(1); //[1]
        fn4(1,2,3,4); //[1,2,3,4]
    
    // 4.返回值讲解
    // i.可以空return操作,用来结束函数
        function fn5(a) {
            if (a == 10){
                return;
            }
            console.log('参数不为10')
        }
        fn5(10);
    // ii.返回值可以为任意js类型数据
        function fn6() {
            return{
                'name':'henry',
                'age':25
            }
        }
        var res = fn6();
        console.log(res); //{name: "henry", age: 25}
        console.log(res.age); //25
    // iii.函数最多只能拥有一个返回值
        function fn7() {
            return 1,true;
        }
        var res = fn7();
        console.log(res) //将最后一个值返回
        //解决方案 return[1,true];
    
    // 5.匿名函数: 没有名字的函数, 函数只能在定义的时候自己来调用一次, 之后再也无法被调用
     // 匿名函数 自定义
    (function () {  // 产生了一个局部名称空间(局部作用域), 并且可以随着匿名函数调用完毕, 被回收
        var aaa = 1000;
        console.log("匿名函数的自调用")
    })();
  • 相关阅读:
    Android中实现ListView圆角效果[转]
    移动终端开发必备知识【转】
    android-supporting-multiple-devices
    Android @+id与@id的区别
    loading android
    Loading Image
    合理的薪酬策略——揭秘万达电商(3)
    Node.js的helloworld 程序
    codeforces Gravity Flip 题解
    HDU 3853 向下向右找出口问题-期望dp
  • 原文地址:https://www.cnblogs.com/lizeqian1994/p/10311158.html
Copyright © 2011-2022 走看看