写点什么

Javascript 重难点总结分享,看到就是赚到!

作者:秃头小帅oi
  • 2024-03-01
    福建
  • 本文字数:3530 字

    阅读完需:约 12 分钟

Javascript 重难点总结分享,看到就是赚到!

​大家好!

本人的分享也是自己边学边做的笔记,若笔记内有错误内容或更优雅适合的写法方案,欢迎私信或评论留言互相学习~在开始前,推荐一款程序员都应该知道的好物——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: 3console.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.......

用户头像

摸个鱼,顺便发点有用的东西 2023-06-19 加入

互联网某厂人(重生版)

评论

发布
暂无评论
Javascript 重难点总结分享,看到就是赚到!_秃头小帅oi_InfoQ写作社区