这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
0 前面的话
今天也就写点JavaScript的知识吧!知识点内容可能比较散,仅记录一下而已。这里的学习参考了部分菜鸟教程内容,如有需要,链接:www.runoob.com/js/js-error…
1 正文
JavaScript 错误 - throw、try 和 catch
try 语句测试代码块的错误。
catch 语句处理错误。
throw 语句创建自定义错误。
finally 语句在 try 和 catch 语句之后,无论是否有触发异常,该语句都会执行。
JavaScript 变量提升
声明提升hoisting:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。只有声明的变量会提升,初始化的不会。
x = 5; // 变量 x 设置为 5
var x; // 声明 x
var y = 7; // 初始化 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 x = 10 + 5; // x 的结果为 15
var x = 10 + "5"; // x 的结果为 "105"