字节青训营前端青训营笔记「4」 | 青训营笔记

46 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天

0 前面的话

今天也就写点JavaScript的知识吧!知识点内容可能比较散,仅记录一下而已。这里的学习参考了部分菜鸟教程内容,如有需要,链接:www.runoob.com/js/js-error…

1 正文

JavaScript 错误 - throw、try 和 catch

try 语句测试代码块的错误。

catch 语句处理错误。

throw 语句创建自定义错误。

finally 语句在 try 和 catch 语句之后,无论是否有触发异常,该语句都会执行。

JavaScript 变量提升

声明提升hoisting:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。只有声明的变量会提升,初始化的不会。

x5; // 变量 x 设置为 5
var x; // 声明 x

var y7; // 初始化 y

其实主要理解 js 的解析机制就行。

遇到 script 标签的话 js 就进行预解析,将变量 var 和 function 声明提升,但不会执行 function,然后就进入上下文执行,上下文执行还是执行预解析同样操作,直到没有 var 和 function,就开始执行上下文。如:

a=5;
show();
var a;
function show(){};

预解析:

function show(){};
var a;
a=5;
show();

需要注意都是函数声明提升直接把整个函数提到执行环境的最顶端。

除了以上的函数声明方式外,还可以使用匿名函数的方式。

声明:

var 变量名称=function(形参列表){
  //函数体
}

调用:

变量名称(实参列表)

注意:使用匿名函数的方式不存在函数提升,因为函数名称使用变量表示的,只存在变量提升。例:

var getName=function(){
  console.log(2);
}

function getName(){
  console.log(1);
}

getName();
//结果为2

可能会有人觉得最后输出的结果是 1。但是 getName 是一个变量,因此这个变量的声明也将提升到顶部,而变量的赋值依然保留在原来的位置。需要注意的是,函数优先,虽然函数声明和变量声明都会被提升,但是函数会首先被提升,然后才是变量。

//函数、变量声明提升后
function getName(){    //函数声明提升到顶部
  console.log(1);
}

var getName;    //变量声明提升
getName = function(){    //变量赋值依然保留在原来的位置
  console.log(2);
}

getName();    // 最终输出:2

加法与连接注意事项

加法是两个数字相加。

连接是两个字符串连接。

JavaScript 的加法和连接都使用 + 运算符。

可以通过实例查看两个数字相加及数字与字符串连接的区别:

var x10 + 5;          // x 的结果为 15  
var x10 + "5";        // x 的结果为 "105"