大家好!
本人的分享也是自己边学边做的笔记,若笔记内有错误内容或更优雅适合的写法方案,欢迎私信或评论留言互相学习~在开始前,推荐一款程序员都应该知道的好物——JNPF 低代码开发
应用地址:https://www.jnpfsoft.com?infoq
开发语言:Java/.net
这是一个基于 Java Boot/.Net Core 构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;采用微服务、前后端分离架构,集成了代码生成器,支持前后端业务代码生成,满足快速开发;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3,平台即可私有化部署,也支持 K8S 部署。
在 JNPF 中,至少包含表单建模、流程设计、报表可视化、代码生成器、系统管理、前端 UI 等组件,这种情况下我们避免了重复造轮子,已内置大量的成熟组件,选择合适的组件进行集成或二次开发复杂功能,即可自主开发一个属于自己的应用系统。
另外,后续会持续分享前端开发的其他相关的知识总结等,那么,我们开始吧~
1.Javascript 错误 - try 、throw、catch、finally
含义理解
try 语句测试代码块的错误。
catch 语句处理错误。
throw 语句创建自定义错误。
finally 语句在 try 和 catch 语句之后,无论是否有触发异常,该语句都会执行。
JavaScript 错误
当 JavaScript 引擎执行 JavaScript 代码时,会发生各种错误。
可能是语法错误,通常是程序员造成的编码错误或错别字。
可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。
可能是由于来自服务器或用户的错误输出而导致的错误。
当然,也可能是由于许多其他不可预知的因素。
JavaScript 抛出(throw)错误
当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息。
描述这种情况的技术术语是:JavaScript 将抛出一个错误。
JavaScript try 和 catch
try 语句允许我们定义在执行时进行错误测试的代码块。
catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。
JavaScript 语句 try 和 catch 是成对出现的。
语法
try {
... //异常的抛出
} catch(e) {
... //异常的捕获与处理
} finally {
... //结束处理
}
复制代码
简单示例
//简单示例:
try {
// 可能会抛出错误的代码
const result = someFunction(); // 假设 someFunction 未定义
console.log(result);
} catch (error) {
// 捕获错误并处理
console.log("An error occurred: " + error);
}
复制代码
示例
在下面的例子中,我们故意在 try 块的代码中写了一个错字。catch 块会捕捉到 try 块中的错误,并执行代码来处理它。
var txt="";
function message()
{
try {
adddlert("Welcome guest!");
} catch(err) {
txt="本页有一个错误。\n\n";
txt+="错误描述:" + err.message + "\n\n";
txt+="点击确定继续。\n\n";
alert(txt);
}
}
复制代码
finally 语句
简单示例
//简单示例:
try {
// 可能会抛出错误的代码
console.log("Inside try block");
} catch (error) {
// 捕获错误并处理
console.log("An error occurred: " + error);
} finally {
// 无论是否发生错误,都会执行的代码块
console.log("Finally block executed");
}
复制代码
finally 语句不论之前的 try 和 catch 中是否产生异常都会执行该代码块。
示例
在下面的例子中,我们故意在 try 块的代码中写了一个错字。catch 块会捕捉到 try 块中的错误,并执行代码来处理它。
function myFunction() {
var message, x;
message = document.getElementById("p01");
message.innerHTML = "";
x = document.getElementById("demo").value;
try {
if(x == "") throw "值是空的";
if(isNaN(x)) throw "值不是一个数字";
x = Number(x);
if(x > 10) throw "太大";
if(x < 5) throw "太小";
}
catch(err) {
message.innerHTML = "错误: " + err + ".";
}
finally {
document.getElementById("demo").value = "";
}
}
复制代码
Throw 语句
简单示例
//简单示例:
function divide(x, y) {
if (y === 0) {
throw new Error("Division by zero is not allowed");
}
return x / y;
}
try {
var result = divide(10, 0);
console.log("Result: " + result);
} catch (error) {
console.log("An error occurred: " + error.message);
}
复制代码
throw 语句允许我们创建自定义错误。正确的技术术语是:创建或抛出异常(exception)。如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。
语法
throw exception
异常可以是 JavaScript 字符串、数字、逻辑值或对象。
示例:
本例检测输入变量的值。如果值是错误的,会抛出一个异常(错误)。catch 会捕捉到这个错误,并显示一段自定义的错误消息:
function myFunction() {
var message, x;
message = document.getElementById("message");
message.innerHTML = "";
x = document.getElementById("demo").value;
try {
if(x == "") throw "值为空";
if(isNaN(x)) throw "不是数字";
x = Number(x);
if(x < 5) throw "太小";
if(x > 10) throw "太大";
}
catch(err) {
message.innerHTML = "错误: " + err;
}
}
复制代码
请注意,如果 getElementById 函数出错,上面的例子也会抛出一个错误。
包含 try、catch、throw、finally 语句示例:
function divide(x, y) {
try {
if (y === 0) {
throw "Division by zero is not allowed";
}
return x / y;
} catch (error) {
console.log("Error: " + error);
} finally {
console.log("This will always be executed");
}
}
console.log(divide(6, 2)); // Output: 3
console.log(divide(6, 0)); // Output: Error: Division by zero is not allowed
// This will always be executed
复制代码
2.this【什么是 this 关键字】
含义
含义:this 关键字指向当前函数的上下文对象。在全局上下文中,this 指向全局对象(例如 window 对象)。在函数上下文中,this 的值取决于函数的调用方式。如果函数作为对象的方法调用,则 this 指向该对象。如果函数作为普通函数调用,则 this 指向全局对象。
关于 this 指向的几条规律:
在函数体中,非显示或隐式地简单调用函数时,在严格模式下,函数内的 this 会绑定到 undefined 上,在非严格模式下则会被绑定到全局对象 window/global 上。
一般使用 new 方法调用构造函数时,构造函数内的 this 会绑定到新创建的对象上。
一般通过 call / apply / bing 方法显示调用函数时,函数体内的 this 会绑定到指定参数的对象上。
一般通过上下文对象调用函数时,函数体内的 this 会绑定到该对象上。
在箭头函数中,this 的指向是由外层(函数或全局)作用域来决定的。
示例
1.在函数体中,非显示或隐式地简单调用函数时,在严格模式下,函数内的 this 会绑定到 undefined 上,示例:
"use strict";
function myFunction() {
console.log(this);
}
myFunction(); // 输出为 undefined
复制代码
2.在函数体中,非显示或隐式地简单调用函数时,在非严格模式下则会被绑定到全局对象 window/global 上,示例:
function myFunction() {
console.log(this);
}
myFunction(); // 输出为全局对象 (window 或 global)
复制代码
3.一般使用 new 方法调用构造函数时,构造函数内的 this 会绑定到新创建的对象上。示例:
function Person(name) {
this.name = name;
}
const person1 = new Person('Alice');
console.log(person1.name); // 输出为 'Alice'
复制代码
4.一般通过 call / apply / bing 方法显示调用函数时,函数体内的 this 会绑定到指定参数的对象上。示例:
const person1 = {
name: 'Alice'
};
function greeting() {
console.log('Hello, ' + this.name);
}
greeting.call(person1); // 输出为 'Hello, Alice'
greeting.apply(person1); // 输出为 'Hello, Alice'
const boundGreeting = greeting.bind(person1);
boundGreeting(); // 输出为 'Hello, Alice'
复制代码
5.一般通过上下文对象调用函数时,函数体内的 this 会绑定到该对象上。示例:
const person = {
name: 'Bob',
greet: function() {
console.log('Hello, ' + this.name);
}
};
person.greet(); // 输出为 'Hello, Bob'
复制代码
6.在箭头函数中,this 的指向是由外层(函数或全局)作用域来决定的。示例:
function Person() {
this.age = 0;
setInterval(() => {
this.age++; // this 指向 Person 对象
console.log(this.age);
}, 1000);
}
var p = new Person();
复制代码
3.内容更新 ing.......
评论