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

大家好!

本人的分享也是自己边学边做的笔记,若笔记内有错误内容或更优雅适合的写法方案,欢迎私信或评论留言互相学习~
在开始前,推荐一款程序员都应该知道的好物——JNPF低代码开发

应用地址:https://www.jnpfsoft.com?csdn

开发语言: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.......

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值