首页 > 编程语言 >JavaScript知识点

JavaScript知识点

时间:2023-10-24 22:05:44浏览次数:47  
标签:知识点 Object 函数 作用域 JavaScript 数据类型 拷贝 变量

有哪些数据类型

根据JavaScript中的变量类型传递方式,分为基本数据类型和引用数据类型两大类七种。

基本数据类型包括Undefined、Null、Boolean、Number、String、Symbol (ES6新增)六种。引用数据类型只有 Object—种,主要包括对象、数组和函数。

基本数据类型和引用数据类型的区别

两者作为函数的冬数进行传递时

1、基本数据类型传入的是数据的副本,原数据的更改不会影响传入后的数据。

2、引用数据类型传入的是数据的引用地址,原数据的更改会影响传入后的数据。

两者在内存中的存储位置

1、基本数据类型存储在栈中。

2、引用数据类型在栈中存储了指针,该指针指向的数据实体存储在堆中。

判断数据类型的方法

1、利用typeof可以判断数据的类型;

2、A instanceof B可以用来判断A是否为B的实例,但它不能检测null和undefined; 

3. B.constructor ==A可以判断A是否为B的原型,但constructor 检测Object 与instanceof不一样,还可以处理基本数据类型的检测。

不过函数的_constructor 是不稳定的,这个主要体现在把类的原型进行重写,在重写的过程中很有可能出现把之前的constructor给覆盖了,这样检测出来的结果就是不准确的。

4、Object.prototype.toString.call()

Object.prototype.toString.call()是最准确最常用的方式。

与深拷贝区别,如何实现

浅拷贝只复制指向某个对象的指针,而不复制对象本身。浅考贝的实现方式

1、 Object.assign():需注意的是目标对象只有一层的时候,是深拷贝;

2.扩展运算符;

深拷贝就是在拷贝数据的时候,将数据的所有引用结构都拷贝一份。深拷贝的实现方式

1、手写遍历递归赋值;

2、结合使用JSON.parse()和JSON.stringify()方法。

作用域和作用域链

作用域可以理解为一个独立的地盘,可以理解为标识符所能生效的范围。作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。ES6中有全局作用域、函数作用域和块级作用域三层概念。

当一个变量在当前块级作用域中未被定义时,会向父级作用域(创建该函数的那个父级作用域)寻找。如果父级仍未找到,就会再一层一层向上寻找,直到找到全局作用域为止。这种一层一层的关系,就是作用域链。

作用域和执行上下文的区别

1、函数的执行上下文只在函数被调用时生成,而其作用域在创建时已经生成;

2、函数的作用域会包含若千个执行上下文(有可能是零个,当函数未被调用时)。

闭包

闭包就是引用了其他四数作用域中变量的函数,这种模式通常在函数嵌套结构中实现。里面的函数可以访问外面函数的变量,外面的变量的是这个内部函数的一部分。闭包有如下作用:

1.加强封装,模拟实现私有变量;

2、实现常驻内存的变量。

标签:知识点,Object,函数,作用域,JavaScript,数据类型,拷贝,变量
From: https://blog.51cto.com/u_16220922/8010178

相关文章

  • 【Java 进阶篇】JavaScript 自动跳转首页案例
    在这篇博客中,我们将创建一个JavaScript案例,演示如何自动跳转到网站的首页。这种自动跳转通常用于欢迎页面或广告页面等场景。我们将从头开始创建这个案例,逐步介绍相关的JavaScript知识,让初学者也能理解并实现这个功能。1.什么是自动跳转?自动跳转是指当用户访问一个网页时,页面会自......
  • 【Java 进阶篇】创建 JavaScript 轮播图:让网页焕发生机
    欢迎大家来到本篇博客,今天我们将一起探讨如何使用JavaScript创建一个精美的轮播图。轮播图是现代网站设计的关键元素之一,它能够使网页更加吸引人,提高用户体验。无需担心,本文将面向基础小白,从头开始解释每一步。我们将详细介绍如何构建一个轮播图,涵盖以下内容:什么是轮播图?创建HTML......
  • 【Java 进阶篇】JavaScript BOM(浏览器对象模型)详解
    BOM,即浏览器对象模型(BrowserObjectModel),是JavaScript与浏览器之间的接口,它允许JavaScript与浏览器进行交互,实现访问和控制浏览器窗口、文档和其他浏览器功能的功能。本文将详细介绍BOM的各个方面,包括窗口对象、定时器、历史记录、位置信息等,并提供示例代码来帮助您更好地理解和运......
  • 【Java 进阶篇】JavaScript电灯开关案例:从原理到实现
    JavaScript是一门强大的编程语言,它可以用来创建各种交互式网页应用。在这篇博客中,我们将通过一个简单的电灯开关案例来深入了解JavaScript的基础概念,包括HTML、CSS和JavaScript的结合使用。我们将从头开始构建这个案例,逐步引入相关概念,以帮助初学者更好地理解JavaScript的工作原理......
  • 【Java 进阶篇】JavaScript 事件详解
    在本篇博客中,我们将深入探讨JavaScript事件,这是网页交互的核心。我们将从什么是事件开始,然后逐步介绍事件的类型、如何注册事件、事件处理程序、事件对象以及事件冒泡等相关内容。最终,我们将提供大量的示例代码来帮助您更好地理解JavaScript事件。什么是事件?在Web开发中,事件是用户......
  • [VM] The JavaScript Virtual Machine
    TableofContentIntroudctiontoVMsCPU-UnderstandingthePysicalMachineVMs-Arrays,Objects,functions,prototypechainsDepotExplorer:collectingdatafromtheVMDeopt:CallingCoventions&InliningMegamohpism&InlineCache:Objectpro......
  • JavaScript在发送AJAX请求时,URL的域名地址是使用绝对地址还是相对地址?
    在使用JavaScript发送AJAX请求时,URL的域名地址通常是使用相对地址。相对地址指的是相对于当前页面的URL来确定请求的目标地址。当请求发送到服务器时,浏览器会自动将相对地址转换为完整的绝对URL。这样做的好处是能够更灵活地处理不同环境下的URL路径,同时减少了在JavaScript代码中......
  • MySQL--查询和常用函数(知识点)
    1.查询1.1查询语法:select显示的字段列表from表名where条件GROUPBY分组having条件limit开始记录,条数orderby排序字段desc降序|asc升序10.1.1全查询语法:select显示的字段列表from表名全查询10.1.2条件查询(查询部分行)语法:select显示的字段列表fr......
  • JavaScript 将对象转换为数组
    JavaScript将对象转换为数组在JavaScript中,你可以使用不同的方法将对象转换为数组,具体取决于对象的结构和你希望在数组中得到什么样的数据。以下是一些常见的方法:Object.keys()方法:这种方法将对象的键转换为数组。constobj={a:1,b:2,c:3};constarr=Object......
  • How to fix EventSource onmessage not working in JavaScript All in One
    HowtofixEventSourceonmessagenotworkinginJavaScriptAllinOneSSE:Server-SentEvents/服务端推送error❌window.addEventListener(`load`,(e)=>{console.log(`pageloaded✅`);if(!!window.EventSource){constimg=document.querySelecto......