当前位置: 首页 > news >正文

[Javascript】前端面试基础3【每日学习并更新10】

Web开发中会话跟踪的方法有那些

  • cookie
  • session
  • url重写
  • 隐藏input
  • ip地址
     

JS基本数据类型

  • String:用于表示文本数据。
  • Number:用于表示数值,包括整数和浮点数。
  • BigInt:用于表示任意精度的整数。
  • Boolean:用于表示逻辑值,即true或false。
  • Undefined:当一个变量被声明了,但没有被赋值时,它的值就是undefined。
  • Null:表示一个空值,即没有对象值被赋予变量。
  • Symbol(ES6引入):用于创建唯一的标识符

Javascript常见数据结构和设计模式-CSDN博客

 JS内置对象

Javascript中Object、Array、String-CSDN博客

  • 0bject是JavaScript中所有对象的父对象
  • 数据封装类对象:0bject . Array . Boolean . Number和 String
  • 其他对象:Function . Arguments .Math、Date 、RegExp 、Error

Javascript基本规范

 Javascript有几种类型的值

  • 栈:原数据类型( Undefined ,Null ,Boolean ,Number .String )
  • 堆:引用数据类型(对象、数组和函数)
  • 两种类型的区别是:存储位置不同;
  1. 原始数据类型直接存储在栈( stack )中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;
  2. 引用数据类型存储在堆( heap )中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体
var person = {  firstName: "John",  lastName: "Doe",  age: 50,  greet: function() {  console.log("Hello, my name is " + this.firstName + " " + this.lastName);  }  
};  person.greet();

 Javascript创建对象的几种方式

1. 对象字面量

var person = {  firstName: "John",  lastName: "Doe",  age: 50,  greet: function() {  console.log("Hello, my name is " + this.firstName + " " + this.lastName);  }  
};  person.greet();

2. 使用new Object()

var person = new Object();  
person.firstName = "John";  
person.lastName = "Doe";  
person.age = 50;  
person.greet = function() {  console.log("Hello, my name is " + this.firstName + " " + this.lastName);  
};  person.greet();

3. 构造函数

构造函数是一种特殊的函数,用于初始化新创建的对象。通过new关键字调用构造函数时,会创建一个新对象,并将这个新对象的内部[[Prototype]](即__proto__)链接到构造函数的prototype属性上,最后返回这个新对象。

function Person(firstName, lastName, age) {  this.firstName = firstName;  this.lastName = lastName;  this.age = age;  this.greet = function() {  console.log("Hello, my name is " + this.firstName + " " + this.lastName);  };  
}  var person = new Person("John", "Doe", 50);  
person.greet();

4. 工厂函数

工厂函数是一种封装了创建对象细节的函数,它返回一个对象。这种方法比直接使用new Object()更加灵活。

function createPerson(firstName, lastName, age) {  var obj = new Object("I'm an Object");  obj.firstName = firstName;  obj.lastName = lastName;  obj.age = age;  obj.greet = function() {  console.log("Hello, my name is " + this.firstName + " " + this.lastName);  };  return obj;  
}  var person = createPerson("John", "Doe", 50);  
person.greet();

5. 原型链

在JavaScript中,每个对象都有一个原型(prototype),对象会继承原型的属性和方法。通过修改构造函数的prototype属性,可以实现多个实例共享同一套方法和属性。

function Person(firstName, lastName, age) {  this.firstName = firstName;  this.lastName = lastName;  this.age = age;  
}  Person.prototype.greet = function() {  console.log("Hello, my name is " + this.firstName + " " + this.lastName);  
};  var person1 = new Person("John", "Doe", 50);  
var person2 = new Person("Jane", "Doe", 40);  person1.greet();  
person2.greet();

6. ES6 类

ES6引入了类的概念,使得对象的创建更加直观和易于理解。类语法是基于原型的面向对象编程的语法糖。

class Person {  constructor(firstName, lastName, age) {  this.firstName = firstName;  this.lastName = lastName;  this.age = age;  }  greet() {  console.log("Hello, my name is " + this.firstName + " " + this.lastName);  }  
}  var person = new Person("John", "Doe", 50);  
person.greet();

eval() 

  •  它的功能是把对应的字符串解析成JS 代码并运行
  • 应该避免使用eval ,不安全,非常耗性能(2次,一次解析成js 语句,一次执行)
  • 由JSON字符串转换为JSON对象的时候可以用eval, var obj =eva1(' ( ' + str +')')

 null与undefined

 ["1", "2", "3"].map(parseInt)=[1,NAN,NAN]

 但是,这里有一个需要注意的陷阱。当 map 函数对数组中的每个元素调用 parseInt 时,parseInt 实际上可以接受两个参数:第一个参数是要解析的字符串,第二个参数是基数(即数字的进制)。在 map 函数中,parseInt 被调用时,除了当前元素(即字符串)作为第一个参数外,map 函数还会传递当前元素的索引(从0开始)作为第二个参数给 parseInt

因此,你的代码实际上会这样执行:

  • 第一个元素 "1",索引为0,parseInt("1", 0)由于基数为0,parseInt 会根据字符串的格式来解析,这里 "1" 能被正确解析为十进制数1
  • 第二个元素 "2",索引为1,parseInt("2", 1)这里基数为1,但基数1不是一个有效的基数(有效的基数范围是2到36),因此 parseInt 会返回 NaN(Not-a-Number)。
  • 第三个元素 "3",索引为2,parseInt("3", 2)这里基数为2,但 "3" 在二进制中不是一个有效的数字,因此 parseInt 同样会返回 NaN
["1", "2", "3"].map(function(item) {  return parseInt(item, 10); // 或者简单地 parseInt(item)  
});----------------------------------------------------------------
["1", "2", "3"].map(item => parseInt(item, 10)); // 或者简单地 ["1", "2", "3"].map(parseInt) 如果环境允许默认基数----------------------------------------------------------------------------
//拓展
let numbers = ["10", "010", "0xA"];
let decimalNumbers = numbers.map(function(item) {  // 检查字符串的前缀来确定基数  if (item.startsWith("0x") || item.startsWith("0X")) {  // 十六进制  return parseInt(item, 16);  } else if (item.startsWith("0")) {  // 假设以0开头但不是"0x"或"0X"的是八进制(注意:现代JavaScript可能默认解析为十进制)  // 为了明确性,我们显式指定基数为8  return parseInt(item, 8);  } else {  // 十进制  return parseInt(item, 10);  }  
});  console.log(decimalNumbers); // 输出: [10, 8, 10]

 javascript代码中的"use strict";是什么意思

在JavaScript代码中,"use strict"; 是一个特殊的指令,用于启用严格模式(strict mode)。当在脚本或函数的顶部包含这个指令时,它告诉JavaScript引擎以更加严格的解释和执行代码的方式来运行代码。这有助于捕获一些常见的编码错误,使得代码更加安全、可预测和易于管理。

严格模式有几个主要的好处和限制:

  1. 捕获更多错误:在严格模式下,JavaScript会抛出更多的错误,从而帮助你更早地发现并修复问题。例如,它会阻止你使用未声明的变量(在未启用严格模式的情况下,这通常会导致全局变量被意外创建)。

  2. 禁用某些不安全或不确定的特性:严格模式会禁用或改变一些JavaScript的“不安全”特性,比如with语句和eval()函数的行为。

  3. 使代码更加可预测:在严格模式下,JavaScript的行为在某些方面更加可预测,比如静默失败的操作(如将值赋给只读属性)会抛出错误。

  4. 提升性能:虽然这不是启用严格模式的主要动机,但一些JavaScript引擎在严格模式下能够执行更多的优化,因为严格模式限制了代码的行为,使得这些优化成为可能。

  5. 更清晰的代码意图:通过在代码顶部使用"use strict";,你可以明确地向其他开发者表明这段代码是以更严格的标准编写的,这有助于维护代码的质量和一致性。

JSON 

 JS延迟加载方式

相关文章:

[Javascript】前端面试基础3【每日学习并更新10】

Web开发中会话跟踪的方法有那些 cookiesessionurl重写隐藏inputip地址 JS基本数据类型 String:用于表示文本数据。Number:用于表示数值,包括整数和浮点数。BigInt:用于表示任意精度的整数。Boolean:用于表示逻辑值…...

C++自定义字典树结构

代码 #include <iostream> using namespace std;class TrieNode { public:char data;TrieNode* children[26];bool isTerminal;TrieNode(char ch){data ch;for (int i 0; i < 26; i){children[i] NULL;}isTerminal false;} }; class Trie { public:TrieNode* ro…...

dockerfile部署wordpress

1.将容器直接提交成镜像 [rootlocalhost ~]# docker commit 8ecc7f6b9c12 nginx:1.1 sha256:9a2bb94ba6d8d952527df616febf3fbc8f842b3b9e28b7011b50c743cd7b233b [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx …...

CSS(二)——CSS 背景

CSS 背景 CSS 背景属性用于定义HTML元素的背景。 CSS 背景属性 Property描述background简写属性&#xff0c;作用是将背景属性设置在一个声明中。background-attachment背景图像是否固定或者随着页面的其余部分滚动。background-color设置元素的背景颜色。background-image把…...

开机出现grub无法进入系统_电脑开机出现grub解决方法

最近有小伙伴问我电脑开机出现grub无法进入系统怎么回事&#xff1f;电脑开机出grub的情况有很多&#xff0c;电脑上安装了Linux和Win10双系统&#xff0c;但是由于格式化删除了Linux之后&#xff0c;结果win10开机了之后&#xff0c;直接显示grub&#xff1e;&#xff0c;无法…...

uboot 设置bootargs配置内核网络挂载根文件系统

uboot 设置bootargs配置内核网络挂载根文件系统 uboot设置bootargs env set bootargs "mem256M consolettyAMA0,115200 root/dev/nfs init/linuxrc nfsrootnfs主机地址:nfs路径/busybox/rootfs_glibc_arm64,prototcp rw nfsvers3 rootwait ip板子地址:nfs主机地址:网关:2…...

Vue3+.NET6前后端分离式管理后台实战(三十一)

1&#xff0c;Vue3.NET6前后端分离式管理后台实战(三十一)...

22集 如何minimax密钥和groupid-《MCU嵌入式AI开发笔记》

22集 如何获取minimax密钥和groupid-《MCU嵌入式AI开发笔记》 minimax密钥获取 https://www.minimaxi.com/platform 进入minimax网站&#xff0c;注册登录后&#xff0c;进入“账户管理”&#xff0c; 然后再点击“接口密钥”&#xff0c;然后再点击“创建新的密钥”。 之…...

决策树的概念

决策树的概念 决策树是一种监督学习算法&#xff0c;主要用于分类任务。它通过构建一棵树结构模型来进行预测&#xff0c;其中每个内部节点表示一个特征属性上的判断条件&#xff0c;每条边代表一个判断结果对应的分支&#xff0c;而叶节点则代表最终的类别标签。 应用领域 …...

C++《类和对象》(中)

一、 类的默认成员函数介绍二、构造函数 构造函数名与类同名内置类型与自定义类型析构函数拷贝构造函数 C《类和对象》(中) 一、 类的默认成员函数介绍 默认成员函数就是⽤⼾没有显式实现&#xff0c;编译器会⾃动⽣成的成员函数称为默认成员函数。 那么我们主要学习的是1&…...

SpringBoot中JSR303校验

JSR是 Java EE 的一种标准&#xff0c;用于基于注解的对象数据验证。在Spring Boot应用中&#xff0c;你可以通过添加注解直接在POJO类中声明验证规则。这样可以确保在使用这些对象进行操作之前&#xff0c;它们满足业务规则。个人认为非常有用的&#xff0c;因为它减少了代码中…...

图像数据增强方法概述

图像数据增强方法概述 1. 什么是图像数据增强技术?2. 图像数据增强技术分类2.1 几何变换Python 示例代码 2.2 颜色变换2.3 噪声添加 3. 参考文献 1. 什么是图像数据增强技术? 基础概念&#xff1a;图像增强技术是计算机视觉和图像处理领域中的一个关键技术&#xff0c;主要用…...

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(五)-无人机跟踪

目录 引言 5.3 无人机跟踪 5.3.1 无人机跟踪模型 5.3.2 无人机位置报告流程 5.3.3 无人机存在监测流程 引言 3GPP TS 23.256 技术规范&#xff0c;主要定义了3GPP系统对无人机&#xff08;UAV&#xff09;的连接性、身份识别、跟踪及A2X&#xff08;Aircraft-to-Everyth…...

分享从零开始学习网络设备配置--任务6.1 实现计算机的安全接入

项目描述 随着网络技术的发展和应用范围的不断扩大&#xff0c;网络已经成为人们日常生活中必不可少的一部分。园区网作为给终端用户提供网络接入和基础服务的应用环境&#xff0c;其存在的网络安全隐患不断显现出来&#xff0c;如非人为的或自然力造成的故障、事故&#xff1b…...

双向链表(C语言版)

1. 双向链表的结构 注意&#xff1a;这里的“带头”跟单链表的“头结点”是两个概念&#xff0c;实际上在单链表阶段称呼不太严谨&#xff0c;但是为了更好地理解就直接称为单链表的头结点。带头链表里的头结点&#xff0c;实际为“哨兵位”&#xff0c;哨兵位结点不存储任何有…...

【算法/学习】前缀和差分

前缀和&&差分目录 1. 前缀和的概念及作用 &#x1f308;概念 &#x1f308;用途 &#x1f319;一维前缀和 &#x1f319;二维前缀和 2. 差分的概念及用途 &#x1f308;概念&#xff1a; &#x1f308;用途 &#x1f319;一维差分 &#x1f319;二维差分 1. …...

idea Project 不显示文件和目录

idea Project 不显示文件和目录 File - Close Project - 重新打开项目即可删除.idea文件夹&#xff0c;重新打开项目即可。 原因分析: 可能与使用不同ide例如java、python打开同一项目有关 参考: https://blog.csdn.net/hgnuxc_1993/article/details/132595900 解决打开IDE…...

Linux--Socket编程预备

目录 1. 理解源 IP 地址和目的 IP 地址 2.端口号 2.1端口号(port)是传输层协议的内容 2.2端口号范围划分 2.3理解 "端口号" 和 "进程 ID" 2.4理解 socket 3.传输层的典型代表 3.1认识 TCP 协议 3.2认识 UDP 协议 4. 网络字节序 5. socket 编程接…...

100个python的基本语法知识【下】

50. 压缩文件&#xff1a; import zipfilewith zipfile.ZipFile("file.zip", "r") as zip_ref:zip_ref.extractall("extracted")51. 数据库操作&#xff1a; import sqlite3conn sqlite3.connect("my_database.db") cursor conn.c…...

Git如何将一个分支上的修改转移到另一个分支

在我们使用git进行版本控制时&#xff0c;当代码写错分支&#xff0c;怎么将这些修改转移到正确的分支上去呢&#xff1f;这时&#xff0c;我们可以使用git stath命令来暂存我们的修改&#xff0c;然后再切换到其他分支 未commit&#xff08;提交&#xff09;操作时 1. 先将修…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

Ubuntu系统多网卡多相机IP设置方法

目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机&#xff0c;交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息&#xff0c;系统版本&#xff1a;Ubuntu22.04.5 LTS&#xff1b;内核版本…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...

sshd代码修改banner

sshd服务连接之后会收到字符串&#xff1a; SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢&#xff1f; 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上&#xff0c;比如&#xff1a;PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发&#xff0c;当设备上用的是modbus从站时&#xff0c;采集设备数据需要开发modbus主站&#xff1b;当设备上用的是西门子PN协议时&#xf…...