一、运算符:
    比较符实例:

    | // 1. 数字比数字,正常比
    1 > 2; // false

    // 2. 字符串比较的是ASC码的顺序
    “a” > “b” // false
    “10” > “8” // false “10”不是十而是一零,所以先拿“1”和“8”比,比不过则为false

    // 3. 数字比字符串,字符串先转为数字在进行比较
    11 > “10” // true
    // 数字与非数字字符串比较时,字符串转为数字时为NaN,NaN和数字比都为false
    11 > “you” // false
    “you” > 11 // false | | —- |

    • “==”双等号(等值符)的比较规则是先看类型是否相同,相同在比较值;若类型不同,自动转换成同类型(隐式转换)在做比较:
    1. 如果等号两边是boolean、string、number三者中任意两者进行比较时,优先转换为数字进行比较。
    2. 如果等号两边出现了null或undefined,null和undefined除了和自己相等,就彼此相等。

    “==” 里面的特例
    NaN == NaN // false

    • “===”三等号(等同符)的比较规则是先看类型是否相同,相同在比较值;若类型不同直接返回false。

    逻辑运算符:&& || !
    && 运算符运算规则:会先看‘与’前面的值转化成Boolean值是否为真,若为真,会去看第二个值转换成布尔值的结果,若为真会看第三个值转成boolean值的结果。。。若一直为真的话,会返回最后一个值的原本值;若但凡有一个假,则直接返回该值

    1 && “2” && 3 && 8 // 8
    0 && 2 && 3 && 8 // 0

    // undefined null NaN “” 0 false 转换成boolean值是全为false

    || 或运算符运算规则:先看“或”前面你的值转化成布尔值是否为假,若为假,继续往后看若还是为假,看第三个值转化成布尔值还为假在继续往后看,若一直为假的话,会返回最后一个值的原本值;若但凡有一个值为真,则返回该值

    1 || 2 || 3 || 4 // 1
    0 || false || ‘’ || undefined || null || 3 // 3
    null || false // false

    调皮的出一道题:(实际开发过程中没卵用js基础知识-运算符、语句、函数 - 图1,提示:二进制)
    1 & 2 // 0
    1 & 1 // 1
    1 & 3 // 1
    1 | 3 // 3
    ! 非符号,就是把值转换成布尔值,然后取反,!!的意思就是你晓得js基础知识-运算符、语句、函数 - 图2

    二、for语句
    for (var i = 0; i < 10; i++) {
    document.write(‘a’)
    }

    for循环执行顺序如下:
    1. var i = 0;
    2. if(i < 10){
    document.write(‘a’)
    }
    3. i += 1
    然后循环2, 3直到i<10停止;(这里提示谨慎在if语句执行函数或异步语句,执行也可,但注意i变量的变化)
    for ( ; 只写中间的东西; ){};;for循环只写中间的语句时,就是while语句

    这里面的老师出了几个作业,挺有意思:
    1. 2的n次幂,n可输入?
    2. n的阶乘,n可输入?
    3. 斐波那契额的第n位是什么

    三、switch
    switch (“a”) {
    case “a”: console.log(1);
    case 2 : console.log(2);
    case true:console.log(3);
    }
    // 打印结果:1,2,3;原因是木有加break;这点需要注意

    四、类型判断
    编程形式的区别:

    1. 面向过程:按照步骤,一步一步完成一件事
    2. 面向对象:将事件分成功能对象,让一个个对象去完成;

    特殊:
    typeOf null **// Object
    typeOf [ ] ** // Object

    Number(true) ** // 1
    Number(false) **// 0
    Number(null) **// 0
    Number(undefined) **// NaN

    is**NaN(‘abc’) **// true,运算步骤是:Number(‘abc’)结果在与NaN对比

    var a = ‘123’;
    var b = ‘123’ + 1; **
    a ++;
    console.log(a) ; **// 124
    console.log(+a);** // 124
    console.log(-a); ** // -124**
    console.log(b) ; **// ‘1231’
    cosnole.log(+’abc’)** // NaN**

    undefined == null

    若a没有定义但是执行了一下语句
    typeof a; **// 不会报错,返回 ‘ undefined ‘ ;
    typeof typeof undefined; **// string

    五、函数
    函数声明:
    function test() {}
    函数表达式:
    // =号后面是表达式
    var test = function abc () {} //命名表达式 abc没有用,相当于匿名函数,这时若访问abc会报错:ReferenceError: abc is defined
    var test1 = function () {} // 匿名表达式
    以上的唯一区别是:
    test.name = ‘abc’;
    test1.name = ‘test1’;
    形参、实参

    function sum (a, b) {
    console.log(sum.length); // 2;形参个数
    console.log(arguments.length); // 3; 实参个数
    }
    sum (11, 22, 33)
    function add (a, b, c) {
    a = 2
    console.log(arguments[0]); // 2
    arguments[1] = 0;
    console.log(b); // 0
    c = 3;
    console.log(arguments[2]); // undefined

    }
    add (1, 2)

    如有不对,欢迎指正