JavaScript中的实例对象与函数对象、回调函数、JavaScript的error处理

2023-10-30

区别实例对象与函数对象

  1. 实例对象:new 函数产生的对象,称为实例对象,简称为对象函数
  2. 函数对象:将函数作为对象使用时,简称为函数对象
function Fn(){}  	//Fn函数
const fn = new Fn() 	//Fn是构造函数 fn是实例对象(简称为对象)
console.log(Fn.prototype)	//Fn是函数对象
Fn.call({})		//Fn是函数对象
$('#test')		//jQuery函数
$.get('/test')	//jQuery函数对象

回调函数

什么是回调函数?

因为函数实际上是一种对象,即是内置对象,它可以存储在变量中,通过参数传递给另一个函数,我们可以将它作为参数传递给另一个函数,到函数中执行,甚至执行后将它返回。

回调函数是一个作为变量传递给另外一个函数的函数,它在主体函数执行完之后执行。

回调函数的作用

js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数。

回调函数的特点:

1)不会立刻执行

回调函数作为参数传递给一个函数的时候,传递的只是函数的定义并不会立即执行。和普通的函数一样,回调函数在函调用函数数中也要通过()运算符调用才会执行。

2)是个闭包

回调函数是一个闭包,也就是说它能访问到其外层定义的变量。

3)执行前类型判断

在执行回调函数前最好确认其是一个函数。

二种类型的回调函数

1.同步回调

立即执行,完全执行完了才结束,不会放入回调队列中

例子:数组遍历相关的回调函数 、Promise的 excutor 函数

2.异步回调

不会立即执行,会放入回调队列中将来执行

例子:定时器回调、Ajax回调、Promise的成功或失败的回调

1.同步回调函数

//1.同步回调函数
const arr = [1,3,5];
arr.forEach(item => { //遍历回调,同步回调函数
	console.log(item)
})
console.log('forEach()之后')

在这里插入图片描述
2.异步回调函数

//2.异步回调函数
setTimeout(() => { //异步回调函数,会放入队列中将来执行,不会放入队列,一上来就要执行完
	console.log('timeout callback()');
},0)
console.log('setTimeout()之后')

在这里插入图片描述

JS 的error处理

错误的类型

  1. Error:所有错误的父类型
  2. ReferenceError:引用的变量不存在
  3. TypeError:数据类型不正确的错误
  4. RangeError:数据值不在其所允许的范围内
  5. SyntaxError:语法错误

常见内置错误

1)ReferenceError:引用的变量不存在

console.log(a); //ReferenceError: a is not defined
console.log('------'); //没有捕获error,下面的代码不会执行

在这里插入图片描述
2. TypeError:数据类型不正确的错误

let b
console.log(b.xxx) //TypeError: Cannot read property 'xxx' of undefined

在这里插入图片描述

let b
b = {}
b.xxx() //TypeError: b.xxx is not a function

在这里插入图片描述
3)RangeError:数据值不在其所允许的范围内

function fn() {
	fn()
}
fn() //RangeError: Maximum call stack size exceeded

在这里插入图片描述
4)SyntaxError:语法错误

const c = """"; //SyntaxError: Unexpected string

在这里插入图片描述
错误对象

​ message属性:错误相关信息

​ stack属性:函数调用栈记录信息

错误处理

​ 捕获错误:try … catch

​ 抛出错误:throw error

1)捕获错误:try … catch

try{
	let d
	console.log(d.xxx);
}catch(error){
	console.log(error.message);
	console.log(error.stack);
}
console.log('出错之后');

在这里插入图片描述
2)抛出错误:throw error

function something() {
	if(Date.now() % 2 === 1){
		console.log('当前时间为奇数,可以执行任务');
	} else { //如果时间是偶数抛出异常,由调用来处理
		throw new Error('当前时间为偶数,无法执行任务');
	}
}
			
// 捕获处理异常
try {
	something()
} catch(error){
	console.log(error.message);
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript中的实例对象与函数对象、回调函数、JavaScript的error处理 的相关文章

  • es6数组去重+找出去重的个数

    本Markdown编辑器使用 StackEdit 6 修改而来 用它写博客 将会带来全新的体验哦 分享es3去重 找出重复个数跟es6的 Array prototype unique3 function var res var json f
  • 微信小程序播放音乐并同步一次显示一行歌词

    主要是对于歌词部分的描述 gitee项目仓库地址 https gitee com manster1231 master cloud music 点个star哦 1 总体思路 先在加载页面时异步获取歌词 根据 musicId 我们可以获取到该
  • bug: TypeError: Invalid attempt to spread non-iterable instance

    报错信息 分析 此类报错多为扩展运算符报错 问题代码 解决方式
  • ES6-Map、Set与Arrary的转换

    Map与Array的转换 这个数组要是二维数组
  • js获取数组中最大最小值及对应索引值(下标)

    1 使用原生Js实现该功能 主要是通过循环实现 getMaxMin data key gt if data return false let maxIndex 0 let minIndex 0 let maxNum data 0 key 0
  • JS数组与对象数据格式互相转换

    JS数组与对象数据格式互相转换 一 二维数组转数组对象 开发过程中后端传过来的数据和自己需要的数据格式不统一 需要数据格式的转化 let twoArr 20 30 40 30 40 50 40 50 60 let keys name1 na
  • ES6箭头函数(三)-应用场景

    直接作为事件handler document addEventListener click ev gt console log ev 作为数组排序回调 var arr 1 9 2 4 3 8 sort a b gt if a b gt 0
  • 【ES6】中var、let、const的区别

    一 块级作用域 ES5 中作用域有 全局作用域 函数作用域 ES6 中新增了块级作用域 块级作用域由 包括 if语句和for语句里面的 也属于块级作用域 var a 1 console log a 1 console log a 1 通过v
  • Vue.js中的v-model指令(双向绑定)

    Vue js中v model的作用 v model的作用和使用场景 1 v model的作用 双向绑定 2 v model双向绑定的使用场景 表单 3 总结 v model的作用和使用场景 你好 Vue js作为现在最为常用的前端框架之一
  • Vue+ElementUI电商项目(六)

    订单列表 创建订单列表路由组件并添加路由规则 在view中新建orderManagement文件夹 新建Order vue组件 组件中添加代码如下
  • ES6入门:let、const、 var区别及注意事项

    ES6入门 let const var区别及注意事项 一 let const 1 用来声明变量或声明常量 2 let 代替 var 声明变量 const 声明常量 为了那些一旦初始化就不希望重新赋值的情况设计的 3 var let声明的就是
  • ES6非空判断

    es6 Null传导运算符 const firstName message body user firstName default 运算符相当于一种短路机制 只要不满足条件 就不再往下执行 Null 判断运算符 属性的值为null unde
  • Promise 捕获错误

    你好 我是南一 这是我在准备面试八股文的笔记 如果有发现错误或者可完善的地方 还请指正 万分感谢 前言 今天做项目时 遇到Promise抛出错误捕获不到的情况 然后我就去找了 阮一峰ES6入门重新学了一遍 又加深了对Promise的理解 分
  • 深入理解ES6箭头函数中的this

    简要介绍 箭头函数中的this 指向与一般function定义的函数不同 比较容易绕晕 箭头函数this的定义 箭头函数中的this是在定义函数的时候绑定 而不是在执行函数的时候绑定 1 何为定义时绑定 我们来看下面这个例子 1 var x
  • 【Bun1.0】使用 Bun.js 构建快速、可靠和安全的 JavaScript 应用程序

    bun js Bun 是一个现代的JavaScript运行环境 如Node Deno 主要特性如下 启动速度快 更高的性能 完整的工具 打包器 转码器 包管理 官网 https bun sh 优点 与传统的 Node js 不同 Bun j
  • React解密:React Hooks函数之useCallback和useMemo

    之所以将useCallback和useMemo放到一起 从某种意义上说 他们都是性能优化的始作俑者 他们也有很多的共性 我们先来回顾一下class组件性能优化的点 调用 setState 就会触发组件的重新渲染 无论前后 state 是否相
  • JavaScript 实现html导出为PDF文件

    相信各位前端工程狮们在一些报表项目 管理系统项目中都会遇到在这样的需求 申请报 表格 简历等等图文信息有导出为PDF文件 下面是记录我在项目中完成该需求的代码dome 发布出来也是希望对大家有些帮助 1 整体思路 将HTML元素打印或导出为
  • ES6阮一峰入门教程

    地址为 https es6 ruanyifeng com
  • js生成随机颜色

    十六进制颜色 方法1 const randomHex gt Math floor Math random 0xffffff toString 16 padEnd 6 0 console log randomHex 十六进制颜色 方法2 co
  • 【JavaScript】Set方法

    基本用法 ES6 提供了新的数据结构 Set 它类似于数组 但是成员的值都是唯一的 没有重复的值 Set 本身是一个构造函数 用来生成 Set 数据结构 const s new Set 2 3 5 4 5 2 2 forEach x gt

随机推荐

  • 算法的鲁棒性

    在机器学习领域 总是看到 算法的鲁棒性 这类字眼 比如这句 L1范数比L2范数鲁棒 鲁棒 的英文是robustness 其是一个特别大的研究领域 最权威的著作当属稳健统计的2本厚书 文献 1 和 2 有志之士可作研究 本人的硕士论文对算法鲁
  • 存储显示联机服务器,存储和服务器如何连接

    存储和服务器如何连接 内容精选 换一换 通过内网连接云手机实例时 需要在租户VPC中创建一台弹性云服务器 作为连接云手机的跳板机器 若创建云手机服务器时未使用自定义网络 还需在云手机租户的VPC和服务器所在VPC之间建立对等连接 如图1所示
  • E70_433半双工无线模组,伪全双工方案

    E70 433半双工无线模组 伪全双工方案 前言 架构设计 外侧输入模块 外侧输出模块 内侧发帧模块 内侧接受模块 实现代码 通用宏定义 代码解析 通用工具函数 代码解析 串口输入输出函数 代码解析 核心业务代码 发送模块 代码解析 接收模
  • uint8 int8

    signed char int8 unsigned char uint8 int int16 unsigned int uint16 long int32 unsigned long uint32 long long int64 unsig
  • python设计个性签名

    python设计个性签名 1 设计个性签名即根据输入的汉字 在签名网站上爬取相应的签名并可视化输出设计结果 2 签名展示举例 可根据需要自行修改 潇洒签 代码展示 import tkinter from tkinter import fro
  • 用python写一个简单的对话框

    前几天 同事说他学过C 做对话框 然后他问我可不可以用python写个对话框 今天我就来写个python的简单版本对话框 大家都是成年人且单身 那么就来写个相亲的对话框 import time print 快过年了 相亲队伍火热报名中 ti
  • Charles 下载并激活(现在已经不用下载Jar包了)。完美解决

    Charles下载网址 https www charlesproxy com download 1 Charles先下载 安装 2 安装完成之后 https www zzzmode com mytools charles 输入任意名字 点击
  • Hadoop Hive sql语法详解

    Hive 是基于Hadoop 构建的一套数据仓库分析系统 它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据 可以将结构 化的数据文件映射为一张数据库表 并提供完整的SQL查询功能 可以将SQL语句转换为MapRe
  • 简单案例分析

    今天做了几个案例 我不太会 还有人说我笨 还说我逻辑思维有问题 其实我感觉也是 他说的对 我就是有点笨 逻辑还跟不上 我希望多对别人宽容与帮助 多给那些原本就不太会的同学一些鼓励 案例1 设计并实现打印一个四位数的逆序数的程序 例如 123
  • 计算日期间隔的巧妙代码C++

    int Date daysTo int year int month int day int y1 m1 d1 int y2 m2 d2 m1 m 9 12 y1 y m1 10 d1 365 y1 y1 4 y1 100 y1 400 m
  • oracle-超全的多表查询连接

    Oracle 聚合函数 Oracle 日期 时间函数 一 简述 1 两个表的连接 是通过将一个表中的一列或者多列同另一个表中的列连接而建立起来的 用来连接两张表的表达式组成了连接条件 当连接成功后 第二张表中的数据就同第一张表连接起来了 并
  • C#学习笔记 LINQ简单使用

    LINQ是C 中的一项非常好用的功能 全程是语言集成查询Language Integrated Query LING和SQL类似 但是不仅可以查询数据库中的数据 还可以查询文件 XML 对象集合等等 要使用LINQ特性 需要引用System
  • 购物车测试点

  • 【计算机网络】湖科大微课堂笔记 p67-70 应用层概述、客户-服务器方式和对等方式、动态主机配置协议DHCP、域名系统DNS

    文章目录 应用层概述 客户 服务器方式和对等方式 动态主机配置协议DHCP 小结 域名系统DNS 小结 一些例题 应用层概述 客户 服务器方式和对等方式 客户 服务器方式 对等方式 动态主机配置协议DHCP DHCP的作用 DHCP工作过程
  • mysql事务回滚是什么意思_Mysql事务提交及事务回滚是什么意思

    本篇文章主要给大家介绍mysql事务提交及事务回滚的相关知识 事务可以说是一段sql 语句的批处理 但是这个批处理是一个atom 原子 不可分割 要么都提交执行 要么回滚 rollback 都不执行 关于事务的详细定义介绍 我们在之前的文章
  • 6678开发板NDK网口通信完整实现(附源码)

    写在前面 1 已经有很多前辈做过很优秀的记录 本篇尽量讲得详细一点 能够让新手直接上手 2 在整个调试过程中 会遇到各种各样的问题 如果遇到问题请看第四部分 大部分问题应该能解决掉 不能解决的就评论区留言 3 我的CCS安装路径是 C Ti
  • simpleitk 读数据 图像 dicom nii 处理数据

    最近在使用 simpleITK 读取dicom nii 处理数据 非常方便 下面记录一下 1 读取DICOM序列 医学图像中一个CT序列包含很多张图片 即一个case包含许多slice 使用SimpleITK可以直接读取一个序列 impor
  • 基于微信小程序的电影院订票选座系统

    随着数据库技术和无线互联网的发展 各行业的数据信息量快速增多 正是由于这种发展形势 数据量变得非常杂乱无序 必须通过信息系统来选择用户需要的信息 本文通过微信小程序平台上研发电影院订票选座系统 解决部分电影院只能通过实体前台订票选座问题 本
  • BUCK BOOST学习总结

    首先对于我这种电源方面的小白来说 关于电源用的最多的就是线性稳压了 开关类的如 TI 的TPS系列 我是只知道应用电路而不知道具体原理的 但是长此以往也不是个办法 于是今天就带打家详细的来讲一下 BUCK BOOST电路的原理 先挂几个连接
  • JavaScript中的实例对象与函数对象、回调函数、JavaScript的error处理

    区别实例对象与函数对象 实例对象 new 函数产生的对象 称为实例对象 简称为对象函数 函数对象 将函数作为对象使用时 简称为函数对象 function Fn Fn函数 const fn new Fn Fn是构造函数 fn是实例对象 简称为