Js中的常见全局函数

news2024/11/24 1:53:03

文章目录

  • 1、encodeURI、decodeURI
  • 2、encodeURIComponent、decodeURIComponent
  • 3、parseInt
  • 4、parseFloat
  • 5、String
  • 6、Number
  • 7、Boolean
  • 8、isNaN、Number.isNaN()
  • 9、JSON
  • 10、toString

Js内置了一些函数和变量,全局都可以获取使用(本文归纳非构造函数作用的函数)

1、encodeURI、decodeURI

  • URI(Uniform Resource Identifier)标记一个字符串
  • url出现特殊字符,需要编码
const url = 'http://www.abc.com?key1=value 1&key2=value2'
// 编码
const uriEn = encodeURI(url)
// 'http://www.abc.com?key1=value%201&key2=value2'
// 空格变成了%20
// 解码 还原
decodeURI(uriEn)
// url

2、encodeURIComponent、decodeURIComponent

  • encodeURIComponent可以看成是对encodeURI的补充处理
  • 补充编码更多字符串 “; / ? : @ & = + $ , #”
  • 大部分特殊字符会被编码,!'()*-._~0-9a-zA-Z 不会被编码
const url = 'http://www.abc.com?key1=value 1&key2=value2+'
// 编码
const uriEn = encodeURIComponent(url)
// 'http%3A%2F%2Fwww.abc.com%3Fkey1%3Dvalue%201%26key2%3Dvalue2%2B'
// 解码 还原
decodeURIComponent(uriEn)
// url

3、parseInt

  • 对字符串处理,从左到右读取字符串,得到整数;先匹配特殊字符头,比如0x表示16进制度;没有特殊字符头,碰到非数字字符结束(包括小数点)
  • parseInt(string, radix); // radix表示进制
// 特殊字符头 0x 表示 16进制
parseInt('0x10') // 16
// 一般字符 radix默认为10
parseInt('1.1a') // 1
parseInt('11a') // 11
parseInt(' 11a') // 11
parseInt('') // NaN

// 2 <= radix <= 36, 默认为10或者根据特殊字符头推导
parseInt('0x10') // radix === 16
// 2 >= radix or radix >= 36 返回NaN
parseInt('1', 1) // NaN
// radix === (0 || undefined) 搜索string有没有特殊字符头,没有则更改为10
parseInt('1', 0) // 1

// case
['1', '2', '3',].map(parseInt)
// 相当于
parseInt('1', 0) // 1 radix被更改为10
parseInt('2', 1) // NaN radix小于2
parseInt('3', 2) // NaN sting数字不能大于radix

4、parseFloat

  • 匹配数字,直到匹配第一个小数点,之后只匹配数字;类似于num.num
  • 碰到非数字和小数点直接结束(除非是第一个小数点)
// 没有匹配到数字都会返回NaN
parseFloat('a1.11') // NaN
parseFloat('1a.11') // 1
parseFloat('1.a11') // 1
parseFloat('1.1a1') // 1.1

5、String

// 字符串,强转
String(true) // 'true'
// 引用数据,调用对应的toString
String([1,1]) // '1,1' // Array.toString
String({}) // '[object Object]' // Object.toString

6、Number

Number(num)

// num === undefined
Number(undefined) // NaN
// num === true/false; 隐式转换
Number(true) // 1
Number(false) // 0
// num === string 会进行数字推导,纯数字会返回数字,非数字返回NaN
Number('1.1') // 1.1
Number('true') // NaN
// 隐式转换
Number('') // 0
Number([]) // 0 // [].toString()=>''=>0
Number(['1']) // 1

7、Boolean

// key === 0、-0、null、false、NaN、undefined、''
Boolean(key) === false
// 其余情况
Boolean(key) === true

8、isNaN、Number.isNaN()

  • isNaN(key) 遇到string类型,先内部转数字,再比较,存在隐患
  • Number.isNaN()只会匹配NaN,不会转换
isNaN('1a') // true
Number.isNaN('1a') // false
Number.isNaN(NaN) // true

9、JSON

  • 注意JSON.stringify参数
  • 注意JSON.stringify有些字段具有以下值,不会序列化:undefined,function
const obj = {
  name: 'Jason',
  age: 18,
  color: 'red',
  null: null,
  undefined: undefined, // 未被序列化
  fun: function () {}, // 未被序列化
};
// JSON.stringify(string, replaceFun: (key, value) => value, indent)
// replaceFun表示转换函数;indent表示换行后的缩进,需要把字符串展示在页面上可以使用
// ++value自增并返回新值、value++自增但是返回旧值
JSON.parse(JSON.stringify(obj, (key, value) => (key === 'age' ? ++value : value), 2));

// {name: 'Jason', age: 19, color: 'red', null: null}

10、toString

// 借用Objece.toString 得到数据类型
Object.prototype.toString.call() // [object Undefined]
Object.prototype.toString.call('') // [object String]
Object.prototype.toString.call([]) // [object Array]
Object.prototype.toString.call({}) // [object Object]

// Array.toString 调用split(','); 如果参数不是数组,则会去原型链上找到Object.prototype.toString
// Array.prototype.__proto__ =》Object.prototype
Array.prototype.toString.call([1,'2']) // 1,2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2246356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hello-Go

Hello-Go 环境变量 GOPATH 和 GOROOT &#xff1a;不同于其他语言&#xff0c;go中没有项目的说法&#xff0c;只有包&#xff0c;其中有两个重要的路径&#xff0c;GOROOT 和 GOPATH Go开发相关的环境变量如下&#xff1a; GOROOT&#xff1a;GOROOT就是Go的安装目录&…

android 实现答题功能

一、效果 二、实现思路 1、界面实现 实现起来其实不难&#xff0c;首先我们可以看到&#xff0c;界面是由答题进度、题目、选项ABCD组成&#xff0c;现在就是要考虑实现方式&#xff0c;答题进度可以使用Textviewprogressbar实现&#xff0c;题目直接使用Textview&#xff0c;…

基于Java Springboot高校工作室管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

React(二)

文章目录 项目地址七、数据流7.1 子组件传递数据给父组件7.1.1 方式一:給父设置回调函数,传递给子7.1.2 方式二:直接将父的setState传递给子7.2 给props传递jsx7.2.1 方式一:直接传递组件给子类7.2.2 方式二:传递函数给子组件7.3 props类型验证7.4 props的多层传递7.5 cla…

浅谈丨功能安全测试,汽车的守护者

随着新能源汽车迅猛的发展&#xff0c;各类车型频频面世&#xff0c;同时辅助驾驶/自动驾驶等智驾功能也在不断迭代&#xff0c;使得整个汽车系统的复杂性越来越高&#xff0c;最终导致消费者不得不对如今的汽车质量和安全性提出质疑。 如何打破质疑&#xff1f; 那就不得不搬…

bridge-multicast-igmpsnooping

# 1.topo # 2.创建命名空间 ip netns add ns0 ip netns add ns1 ip netns add ns2 ip netns add ns3 # 3.创建veth设备 ip link add ns0-veth0 type veth peer name hn0-veth0 ip link add ns1-veth0 type veth peer name hn1-veth0 ip link add ns2-veth0 type veth pe…

密码学11

概论 计算机安全的最核心三个关键目标&#xff08;指标&#xff09;/为&#xff1a;保密性 Confidentiality、完整性 Integrity、可用性 Availability &#xff0c;三者称为 CIA三元组 数据保密性&#xff1a;确保隐私或是秘密信息不向非授权者泄漏&#xff0c;也不被非授权者使…

MIT 6.S081 | 操作系统 | Lab1: Xv6 and Unix utilities

Lab1: Xv6 and Unix utilities 文章目录 Lab1: Xv6 and Unix utilities实验任务1.启动XV6(easy)2.Sleep(easy)-练手的&#xff0c;就是熟悉一下怎么在xv6项目中加.c文件&#xff0c;生成可执行程序并进行测试的1.解析rm.c2.argc 如何被赋值3.Sleep代码4.makefile编辑5.通过make…

在SpringBoot项目中集成MongoDB

文章目录 1. 准备工作2. 在SpringBoot项目中集成MongoDB2.1 引入依赖2.2 编写配置文件2.3 实体类 3. 测试4. 文档操作4.1 插入操作4.1.1 单次插入4.1.2 批量插入 4.2 查询操作4.2.1 根据id查询4.2.2 根据特定条件查询4.2.3 正则查询4.2.4 查询所有文档4.2.5 排序后返回 4.3 删除…

美团-Leaf ID算法集成到SpringBoot项目

提前准备 下载源码 GitHub地址&#xff1a;https://github.com/Meituan-Dianping/Leaf 下载下来 然后 maven install 安装到本地仓库 再需要用到该ID算法的项目中引入 以下内容 <!-- 本地仓库中的Leaf --> <dependency><artifactId>leaf-boot-starte…

AI+若依框架项目

基础应用篇 1.若依搭建 技术选型 RuoYi-Vue版本&#xff0c;采用了前后端分离的单体架构设计&#xff1a; 软件环境&#xff1a;JDK、MySQL 、Redis 、Maven、Node 技术选型&#xff1a;Spring Boot、Spring Security、MyBatis、Jwt、V 官方推荐 课程版本 JDK > 1.8 …

RabbitMQ高可用延迟消息惰性队列

目录 生产者确认 消息持久化 消费者确认 TTL延迟队列 TTL延迟消息 惰性队列 生产者确认 生产者确认就是&#xff1a;发送消息的人&#xff0c;要确保消息发送给了消息队列&#xff0c;分别是确保到了交换机&#xff0c;确保到了消息队列这两步。 1、在发送消息服务的ap…

将django+vue项目发布部署到服务器

1.部署django后端服务 部署架构 1.1 下载依赖插件 pip3.8 freeze > requirements.txt1.2 安装依赖插件 pip3 install -r requirements.txt1.3 安装mysql数据库 apt install mysql-server初始化数据库 CREATE USER admin% IDENTIFIED WITH mysql_native_password BY 123…

论文阅读:SIMBA: single-cell embedding along with features

Chen, H., Ryu, J., Vinyard, M.E. et al. SIMBA: single-cell embedding along with features. Nat Methods 21, 1003–1013 (2024). 论文地址&#xff1a;https://doi.org/10.1038/s41592-023-01899-8 代码地址&#xff1a;https://github.com/pinellolab/simba. 摘要 大多…

商业物联网:拥抱生产力的未来

在现代商业格局中&#xff0c;数据占据至高无上的地位。物联网&#xff08;IoT&#xff09;站在这场数字革命的前沿&#xff0c;将以往模糊不清的不确定因素转变为可衡量、可付诸行动的深刻见解。物联网技术为日常物品配备传感器与连接功能&#xff0c;使其能够实时收集并传输数…

【FRP 内网穿透 从0到1 那些注意事项】

【摘要】 最近跟第三方团队调试问题&#xff0c;遇到一个比较烦的操作。就是&#xff0c;你必须要发个版到公网环境&#xff0c;他们才能链接到你的接口地址&#xff0c;才能进行调试。按理说&#xff0c;也没啥&#xff0c;就是费点时间。但是&#xff0c;在调试的时候&#…

最新Kali安装详细版教程(附安装包,傻瓜式安装教程)

本文主要详细介绍 kali 的安装过程&#xff0c;以及安装完成后的基本设置&#xff0c;比如安装增强工具&#xff0c;安装中文输入法以及更新升级等操作。 文章目录 实验环境准备工作步骤说明安装虚拟机安装 Kali安装增强工具安装中文输入法更新升级 实验环境 VMware &#x…

【山大909算法题】2014-T1

文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 为带表头的单链表类Chain编写一个成员函数Reverse&#xff0c;该函数对链表进行逆序操作&#xff08;将链表中的结点按与原序相反的顺序连接&#xff09;&#xff0c;要求逆序操作就地进行&#xff0c;不分配…

论文浅尝 | MindMap:知识图谱提示激发大型语言模型中的思维图(ACL2024)

笔记整理&#xff1a;和东顺&#xff0c;天津大学硕士&#xff0c;研究方向为软件缺陷分析 论文链接&#xff1a;https://aclanthology.org/2024.acl-long.558/ 发表会议&#xff1a;ACL 2024 1. 动机 虽然大语言模型&#xff08;LLMs&#xff09;已经在自然语言理解和生成任务…

Win11 22H2/23H2系统11月可选更新KB5046732发布!

系统之家11月22日报道&#xff0c;微软针对Win11 22H2/23H2版本推送了2024年11月最新可选更新补丁KB5046732&#xff0c;更新后&#xff0c;系统版本号升至22621.4541和22631.4541。本次更新后系统托盘能够显示缩短的日期和时间&#xff0c;文件资源管理器窗口很小时搜索框被切…