1.类型装换

1.1 转为数字类型


// 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

1.2 转为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);  //在浏览器控制台中字符类型是黑色的 数字是蓝色的

1.3 其他类型转为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

2.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

3.条件语句

  • if 语句
  • 三目运算符 res = a>b?true:false (运行效率比if语句高)
  • switch语句

    • default break 都是可选语句了,当case后面没有break语句时,如果条件匹配成功,直接贯穿所有case语句,直到执行break语句

4.循环语句

  • while
  • do while
  • for

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

5.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);
    }
}

6.函数

6.1 函数的概述

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

6.2 函数的参数

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))

6.3 作用域

新的作用域:函数会产生新的作用域,循环,条件语句不会产生新的作用域

变量作用域
全局变量:定在文件中,但在函数外的变量为全局变量,使用范围为整个文件的任意位置

局部变量:在函数内部使用var声明的变量为局部变量,使用范围为该函数内部

6.4 变量的提升

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();

6.5 参数默认值


// 定义一个函数,该函数有两个参数
// 参数的默认值
// 第一种方式: 在定义形参时,直接赋值
// 第二种方式: 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();

6.6 匿名函数


// 非即时函数
var a = function(num){
    console.log(num);
};
a(1233);


// 即时函数
(function(num){
    console.log(num);
})(666);

// 一般来说,匿名函数当做一次性函数使用,调用一次结束后,
// 一般情况下会把匿名函数作为即时函数,但是任何函数都可以
// 即时执行


// 普通函数形式的即时函数
/*(function abc(){
    alert('123')
})();*/

Javascript ECMA-3 (数组,Date,正则)


rottengeek
476 声望78 粉丝

后续python相关内容移步简书与知乎(python进阶,爬虫,数据分析,机器学习,自然语言处理,知识图谱)