因为唯一的本子基础点记太多了,以至于整理后的东西没地方写,所以打算用博客进行记录啦!

关于JS语法的基础

1. JS变量名需区分大小写,建议使用小驼峰命名法

  • 变量名如果重复赋值的话会替换为后面的值
  • 多使用let来声明,而不是var
  • 若一次性声明多个变量并赋值,如var h1 = 1, h2 = 2, h3 = 3,需用逗号隔开
  • 关于赋值: 变量名 = 值
  • 变量使用let;常量使用const;函数使用function
  • 数据类型:数字number、字符串string、布尔型bool、undefined、null、对象

2. 关于运算优先级🔝

运算优先级从上往下

  1. ()优先级最高
  2. 一元运算符: 累加++、递减–、取非 !
  3. 算术运算符:与数学中的运算先后一致,即先乘除(*、/、%),后加减(+、-)
  4. 关系运算符:>、<、>=、<=
  5. 相等运算符:相等==、完全相等===、不等于!=、全不等!==

    === 等同符,当两边值的类型相同时,直接比较值,若类型不相同,直接返回false
    == 等值符,当等号两边的类型相同时,直接比较值是否相等,若不相同,则先转化为类型相同的值,再进行比较
    != 返回同类型值比较结果,类型不同时,会转换类型
    !== 不同类型不比较,相同类型才比较
    类型转换规则1:如果等号两边是boolbeanstringnumber三者中任意两者进行比较时,优先转换为数字进行比较;
    类型转换规则2:如果等号两边出现了nullundefinednumllundefined除了和自己相等,就彼此相等
    !!!注意:NaN == NaN //返回false,NaN和所有都不相等

  6. 逻辑运算符 先&&,后||
  7. 赋值运算符 =

3. 关于函数

基本形式为

function fun(形参,形参){
  代码;
  return 返回值;
}
var re = fun(实参1,实参2) //fun为函数名

如果函数中没有return,那么函数调用后接到的返回值是undefined
如果函数中有return,但return后面没有值,那么函数调用后接到的返回值也是undefined
函数中return后,不管有什么代码,均不执行,即return后函数的调用结束

  • 匿名函数,即函数本身没有名字👇
    var fun = function(){
      console.log(1);
    }
    fun();
  • 立即执行函数,即自调用匿名函数👇
    (function(){
        alert(123);
    })();
  • 作用域:防止全局变量污染,封装一个局部作用
  • 函数回调:
    function f1(s){
        // var k = 123 + s;
        // console.log(k);
        s();
    }
    var f2 = function(){
        console.log(222);
    }
    //f2函数会被当作值,传入f1函数内,即函数回调
    f1(f2);
  • 闭包:
    function f1(){
        var a = 10;
        var f2 = function(){
            alert(2);
        }
        return f2;
    }
    //函数闭包
    var k = f1();
    k();
  • 变量提升
    变量提升,即在代码执行之间变量已经在编译阶段被声明了
    P.S. JS代码运行分为两个阶段:
  1. 解析(编译)阶段:语法检查,变量及函数进行声明
  2. 运行阶段:变量赋值,代码流程的执行
  • 如果函数与变量同名,那么函数声明会替换变量声明
    console.log(a);
    function(){
    console.log('aaaa');
    }
    var a = 1;
    console.log(a);

4. 作用域链🔗

当函数中使用给某个变量,优先在自己的作用域中查找,如果找不到,则会向上一层作用域查找;如果还是找不到,则继续向上一层查找,直到全局作用域;如果还是找不到的话,直接报错
作用域链

今天就到这里啦,收工收工!💪