• JavaScript(类型转换、条件语句、循环、函数)


    类型装换

    转为数字类型

    // Number
    console.log(Number(undefined));  //NaN
    console.log(Number(null));  //0
            
    console.log(Number(true));  // 1
    console.log(Number(false)); // 0
            
    console.log(Number('123'));  //123
    console.log(Number('123a')); //NaN
    console.log(Number('1.23'));  // 1.23
    console.log(Number('+123'));  //123
    console.log(Number('-123'));  // -123
    console.log(Number('1+23'))  // NaN
    console.log(Number(''));  // 0
    console.log(Number('  '));  // 0
    console.log(Number('1   23'));//  NaN
    console.log(Number('1$%23'));  // NaN
    console.log(Number('  123')); //123
    console.log(Number('1.2.3')); // NaN
    console.log(Number('.23'));  // 0.23
    
    // parseInt() 会试图将字符串转为整型,如果失败 返回NaN
    // 如果前面是空格 数字正负号时, 当碰到 第一个不是数字时停止装换
    // 如果不是数字空格直接返回NaN
    console.log(parseInt(undefined));  //NaN
    console.log(parseInt(null));  //  NaN
            
    console.log(parseInt(true));  // NaN
    console.log(parseInt(false)); // NaN
            
    console.log(parseInt('123'));  //123
    console.log(parseInt('123a')); // 123
    console.log(parseInt('1.23'));  // 1
    console.log(parseInt('+123'));  //123
    console.log(parseInt('-123'));  // -123
    console.log(parseInt('1+23'))  // 1
    console.log(parseInt(''));  // NaN
    console.log(parseInt('  '));  // NaN
    console.log(parseInt('1   23'));//  1
    console.log(parseInt('1$%23'));  // 1
    console.log(parseInt('  123')); //123
    console.log(parseInt('1.2.3')); // 1
    console.log(parseInt('.123'))  //NaN
    
    // parseFloat 与parseInt没有太大区别 除了以下几条
    console.log(parseFloat('1.23'));  // 1.23
    console.log(parseFloat('1.2.3')); // 1.2
    console.log(parseFloat('.123'))  // 0.123
    

    转为String 类型

    // undefined null boolean 转为String类型
    
    var a = undefined + '';
    console.log(typeof a);  // string
    
    var b = null + '';
    console.log(typeof b); // string
    
    var c = true.toString();
    console.log(typeof c);
    
    var num = 20;
    var d = num.toString();
    console.log(d);  // 在浏览器控制台中字符类型是黑色的 数字是蓝色的
    

    其他类型转为Boolean类型

    console.log(Boolean(''));  			// false
    console.log(Boolean(undefined));  	// false
    console.log(Boolean(null));  		// false
    console.log(Boolean(0));  			// false
    console.log(Boolean(0.0));  		// false
    console.log(Boolean(NaN));  		// false
            
    console.log(Boolean(' ')); 			// true
    console.log(Boolean(1));   			// true
    console.log(Boolean('abc'));  		// true
    

    isNaN and isFinite

    console.log(isNaN(NaN));   		// true
    console.log(isNaN('NaN'));   	// true
    console.log(isNaN(123));  		// false
            
    // isFinite: 判断既不是NaN类型 也不是InFinite类型
    console.log(isFinite(123))  		// true
    console.log(isFinite(NaN));  		// false
    console.log(isFinite(Infinity)); 	// false
    console.log(isFinite(' '))  		// true
    console.log(isFinite('123 '))  		// true
    console.log(isFinite('123abc'))  	// false
    

    条件语句

    • if 语句
    • 三目运算符 res = a>b?true:false (运行效率比if语句高)
    • switch语句
      • default break 都是可选语句了,当 case 后面没有 break 语句时,如果条件匹配成功,直接贯穿所有 case 语句,直到执行 break 语句

    循环语句

    • while

    • do while

    • for

      for(var i = 0; i < array.lenght; i++)
      for(var i in array) // i 是下标
      for(var i of array) // i 是元素
      

    break and continue

    // js中循环是可以有名字的
    // 语法格式   名称:循环语句
    // break continue 可以跳过或终止 带有标签名的循环
            
    label1 : for(var i =  0; i < 10; i++){
        label2 : for(var j = 0; j < 10; j++){
            if(j == 3){
                break label1;
            }
            console.log(i + '  ' + j);
        }
    }
    

    函数

    函数的概述

    • 函数名:建议使用驼峰规则
    • 如果不写 return,系统默认返回 undefined
    • 函数在调用时只要有该函数的声明即可

    函数的参数

    function info(name, age) {
        document.write(name);
        document.write(age);        
    }
    info('lily', '9'); // lily 9
    info('lily');  // lily undefined
    info('lily','9','c','d')  // lily 9
            
    // js不定长参数
    function printSum(){
        sum = 0;
        for(i in arguments)
            sum += arguments[i];
        return sum    
    }
    console.log(printSum(1,2,3))
    

    作用域

    • 新的作用域:函数会产生新的作用域,循环,条件语句不会产生新的作用域
    • 变量作用域
      • 全局变量:定在文件中,但在函数外的变量为全局变量,使用范围为整个文件的任意位
      • 局部变量:在函数内部使用var声明的变量为局部变量,使用范围为该函数内部

    变量的提升

    var num = 100;
    /*
     * 在js中如果函数内部使用var声明变量时,在代码执行过程中,系统
     * 会自动把变量的声明语句(var )提到函数的最上方,这个操作叫做变量的提升
     * */
    function fun1 () {
        console.log(num);  // undefined
        num = num +1
        console.log(num);  // NaN   undefined + 1 = NaN
        var num = 200
        console.log(num);  // 200    
    }
    fun1();
    

    参数默认值

    // 定义一个函数,该函数有两个参数
    // 参数的默认值
    // 第一种方式: 在定义形参时,直接赋值
    // 第二种方式: a = a||555;
    // 第三种方式: a = a ? a : 333
    function func2(a, b=999){
        // a = a||555;
        a = a ? a : 333
        console.log(a);
        console.log(b);
    }
    func2(1,2);
    func2(4);
    func2();
    

    匿名函数

    // 非即时函数
    var a = function(num){
        console.log(num);
    };
    a(1233);
    
    
    // 即时函数
    (function(num){
        console.log(num);
    })(666);
    
    // 一般来说,匿名函数当做一次性函数使用,调用一次结束后,
    // 一般情况下会把匿名函数作为即时函数,但是任何函数都可以
    // 即时执行
    
    
    // 普通函数形式的即时函数
    /*(function abc(){
        alert('123')
    })();*/
    
  • 相关阅读:
    根据会员权限显示指定字段教程与源码
    关键字替换排除HTML标签属性字符
    C# 图片处理(压缩、剪裁,转换,优化)
    点击按钮后表单自动提交的问题
    浏览器中添加收藏当前网页
    Javascript基础知识整理
    JS中不同类型的值比较问题
    ACM训练场
    sencha/extjs 动态创建grid表格
    sencha 报错问题汇总
  • 原文地址:https://www.cnblogs.com/qiuxirufeng/p/10408504.html
Copyright © 2020-2023  润新知