JS高端奇淫技巧(持续更新)

SpringBoot+Vue实现请求后台获取Base64编码的图片验证码并使用Redis缓存实现2分钟内有效 场景 前端Vue的登录页面,验证码请求后台,后台生成验证码照片后使用Base64编码后, 返回给前端,前端进行显示。 注: 博客:https://blog.youkuaiyun.com/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 首先看前端页面login.vue <el-form-item prop="code"> <el-input v-model="log... 阅读详情

众所周知, JavaScript是一门很骚的语言, 写一句话有很多种表达方式, 语法怪异而风骚, 自由而散漫, 或许这就是JS成为最流行语言的原因吧. 本文收集了JS开发中常用的各种奇淫技巧, 一句话代码, 函数式的, out of the box的, 短小而精悍的代码片段, 供大家欣赏, 感受一下JS的美好.


0. 向下取整最快方式

向下取整有很多方法, Math.floor, parseInt都可以, 不过两个非(~)运算符来取整是最方便的, 而且逻辑运算很快.

还可以用~~再加1来向上取整.

~~3.14
> 3
~~Math.PI
> 3
~~Math.E
> 2
~~12.98
> 12

1. 转数值类型最快方式

字符串转数字类型也有很多方式, parseFloat, Number(), 但官方推荐直接用一个加号(+)运算符, 是最快最简洁的.

+ new Date()
> 1559785422952
+'123'
> 123
+ {}
> NaN

2. 四舍五入

这个不算奇淫技巧了, 因为本身就与Math.round和toFixed(), 以及toPrecision来实现.

+Math.E.toFixed(0)
> 3
+Math.E.toFixed(1)
> 2.7
+Math.E.toFixed(2)
> 2.72

3. ===比==快

==和!=操作符会在需要的情况下自动转换数据类型。但===和!==不会,它们会同时比较值和数据类型, 避免了多余的计算,这也使得它们要比==和!=快。

现在人很少利用==来做类型转换了, JS也有往强类型发展的趋势.

4. 最安全的交换变量

如何不借助第三个变量(容器)交换2个变量a和b的内容呢? 最安全且最快的办法是利用异或门(^)来进行:

let a = 12;

let b = 123;

a = a ^ b;
b = a ^ b;
a = a ^ b;

a;

> 123

b;

> 12

可能有老师教用加法(+)来取代异或, 加法不仅慢而且容易产生溢出, 不安全, 所以不提倡加法交换. 异或或者同或才能实现在2个容器的情况下保证数据不丢失.

如果借助第三方存储空间老交换变量, 虽然性能不是最优, 看上去会比较直观一些, 最直观的写法是通过数组解构:

[a, b] = [b, a];

// 这样就无需注释了

5. 获取指定范围内均匀分布的随机数

let x = Math.random() * (max - min) + min;

如果需要正态分布, 可以在此基础改造...

6. 最快生成[1,2,3, .... ,n] 的列表

利用列表的下标index来生成数是非常快的.

Array(10).fill(true).map((x,i)=>i+1);
> (10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

还可以看出, 快速构建一个长度为n的列表可以使用Array(n).fill(1);

同理, 构造奇数偶数序列也可以通过这种方式, 还有很多基于自然数的有规律序列都可以这样生成.

7. 打乱列表

利用sort方法快速排序的时候引入一个随机量..嘿嘿

const list = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411];

list.sort(()=>Math.random()-0.5)
> (8) [120, 122205, 458, 400, 5, -215, -85411, 228]

8. 列表聚合

Array.prototype.reduce是一个对列表进行摘要的算法(输入多个元素, 输出一个值), 比如数值列表求和:

list.reduce((sum, curr)=>sum+curr,0)

9. 列表遍历取代循环语句

函数式编程中可以利用Array的forEach, map, filter, some, every, find来取代传统的for循环, while循环, 不仅更优雅, 而且提升了一定效率, 具体方式可以参考我之前的文章.

10. 最快构造一个循环链表

每次执行一下list.push(list.shift());然后访问list[0], 无需额外代码, 最直接实现循环链表, 帅!

const list = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411];

list.push(list.shift());
list[0];
> 458
list.push(list.shift());
list[0];
> 120
list.push(list.shift());
list[0];
> -215

重此以后再也不用判断index到头然后改成0了...

11. 字典的键值对取代switch语句

使用字典取代switch和if else语句也是函数式编程的理念之一.

const day = 'Monday';

({

  'Monday':()=>{},

  'Wednesday':()=>{},

  'Friday':()=>{},

  'default':()=>{},

})[ day || 'default' ];

超级实用的健康提示!

12. ES6,7,8,9,10,11一吨的语法糖

不说了, ecmascript有太多够骚的语法糖, 也许这就是前端社区钟爱JS的原因, 自己去MDN上寻找吧.

13. JS自以为是的Truthy和Falsy

Truthy (真值)指的是在 布尔值 上下文中转换后的值为真的值。所有值都是真值,除非它们被定义为 falsy (即除了 false,0,"",null,undefined 和 NaN 外)。

JS 中的真值示例如下(将被转换为 true,if 后的代码段将被执行):

if (true)
if ({})
if ([])
if (42)
if ("foo")
if (new Date())
if (-42)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)

falsy(虚值)是在 Boolean 上下文中已认定可转换为‘假‘的值.

在需要用到布尔类型值的上下文中使用强制类型转换(Type Conversion )将值转换为布尔值,比如:在条件语句或者循环语句中

 JavaScript中falsy值的例子 (通过 if 代码段将falsy值转换为false):

if (false)
if (null)
if (undefined)
if (0)
if (NaN)
if ('')
if ("")
if (document.all)

然而我不推荐在生产环境下利用逻辑或和逻辑与来判断truthy和falsy, 因为有时候人认为0是有意义的, 而[]是无意义的, 然而在JS里面, 对0和[]的真值判断是相反的.

14. 利用Set对列表去重

[...new Set([42, 'foo', 42, 'foo', true, true])]
> (3) [42, "foo", true]

15. 自定义toJSON方法(fuck原型)

将标准库的一些构造函数给他们赋予toJSON方法, 这样在JSON.stringify的时候就可以生成定制的json,而不是空的了, 这在http传输的时候会非常有用.

Date.prototype.toJSON = function () {

  return this.getTime();

}

Function.prototype.toJSON = function () {

  return this.toString();

}

RegExp.prototype.toJSON = function () {

  return this.toString();

}

JSON.stringify([new Date(),Array, /.*/]);
> "[1559795757062,"function Array() { [native code] }","/.*/"]"

16. 使用getter和setter实现dom数据绑定

传送门: getter, setter

17. 使用模板字符串实现html和css的模板引擎

const unfold = list => list.map(li => `

  <li>${li.name}</li>`).join('');

// 导出模块

module.exports = data => `

  <html lang="en">

    <head>

      <title>${data.title}</title>

    </head>

    <body>

      <h1>${data.h1}</h1>

      <ul>${unfold(data.list)}</ul>

    </body>

  </html> `;

上面的node模块就是HTML的模板引擎, 可以完美的替代市面上的各种产品包括ejs,php,jsp以及Vue脚手架等, 最开心的是不用去学习他们的语法, 利用ES6的模板字符串就可以定制自己喜欢的语法.

同理, CSS和其他类型的标记语言, 都可以通过这种方式而不需要依赖于第三方包.

18. 串行执行动态promise集

并行执行promise很简单,只要使用Promise.all方法就行了,但有没有Promise.sequential呢,也就是串行执行,其实是可以的,要利用Array.prototype.reduce方法来构造一个promise链:

taskList.reduce(async (chain, next) => {

  await chain;

  return next();

}, Promise.resolve());

 

 


最后更新: 2019年09月01日12:49:59

电子电器架构 --- OEM企标中规定ECU启动时间的目的 阅读详情

相关推荐

解决win11无法安装.net framework 3.5(包括.net2.0和3.0)错误代码:0x80070005

解决win11无法安装.net framework 3.5(包括.net2.0和3.0)错误代码:0x80070005

zeng699304的博客 2万+

yum安装、使用以及第三方源配置

一、yum简介(Yellow dog Udater Modified) Python写的一套包管理工具,用于自动化升级、安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。根据rpm的header自动化完成安装任务,能从指定的服务器自动下载RPM包并且安装,自动处理依赖性关系。本身也可做yum服务器。 二、yum安装 下载压缩包,解压安装 wget http://yum.ba...

苍烟落照 1万+

PyTorch转ONNX遇到算子不支持?3种实战解决方案+TensorRT适配技巧

本文针对PyTorch模型导出ONNX时常见的算子不支持问题,提供了从诊断到解决的完整实战指南。首先讲解如何精准定位错误根源,随后详细介绍了三种核心解决方案:注册缺失的符号映射、实现自定义算子,以及为TensorRT开发插件的终极落地方案。文章还分享了构建稳健部署流水线的工程化实践,帮助开发者系统性地解决模型部署中的算子兼容性挑战。

fern8的博客 843

Phonak target之RECD与REUG

RECD 与 REUG 主要针对与儿童的。可以根据这两个参数进行评估和预估,儿童佩戴后,会出现什么效果。 什么是RECD? RECD学名:真耳耦合腔差值。 婴幼儿助听器验配过程中,由于孩童的主观配合有一定困难,RECD就成为非常必要的辅助手段。其中只需要婴幼儿及儿童配合进行一次真耳测试,得到RECD值,后续均可在耦合腔中进行相关的测试: 调节助听器的增益和最大输出; 匹配准确的真耳频响曲线; 实现...

weixin_45731898的博客 8319

3D Gaussian Splatting的使用

Gaussian splatting 快速生成自己屋子的模型

gootyking的博客 1万+

操作不能完成 (错误 0x00000709) 共享打印机无法连接解决办法

环境:windows Server 2012 + Win10 客户端 问题:使用计算机名和IP地址可以正常连接打印机,但是使用另外的A记录或CN记录无法连接,报此错误 原因:这是打印服务DNS解析的问题 故障补充:假设你的服务器电脑名称叫print01,但是你又建了一条A记录或者CNname 叫PR01,就会发现使用额外的A记录或CN记录就无法连接 故障截图: 操作不能完成 (错误...

瑞哥的博客 3万+

8-CNN模型的保存和重载

import numpy as np import tensorflow as tf import matplotlib.pyplot as plt import input_data mnist = input_data.read_data_sets('./data/MNIST/', one_hot=True) trainimg = mnist.train.images trainlabe...

进击的小杨人 4724

Unity-Mirror网络框架-从入门到精通之MultipleMatches示例

Multiple Matches 示例主要讲述了如何在使用 Mirror 网路框架时管理多个游戏匹配。以及如何设置一个能够同时支持多个游戏会话的系统,使玩家能够加入他们所选择的比赛,而不是强制他们加入一个单一的匹配。

TxNet 964

链桨PaddleDTX系列 - xdb源码分析(三)

链桨PaddleDTX xdb代码分析

weixin_40862140的博客 1540

【异常】Cursor 模型服务地域访问限制报错的完整排查与解决方案This model provider doesn‘t serve your region

其本质是:Cursor客户端依赖的上游大语言模型服务提供商,基于自身服务的合规运营范围,对客户端发起的请求进行了来源地域权限校验;当系统检测到请求的网络来源地域,不在该模型服务商官方授权提供服务的地域范围内时,会触发服务访问拦截策略,拒绝响应本次模型调用请求,最终在客户端抛出该报错。合规声明:本文所提供的所有方案,均仅用于技术问题排查与解决,请您在使用过程中严格遵守当地法律法规,以及对应软件与模型服务提供商的用户协议与合规要求。更多关于AI+教育领域的干货,可以关注我的微信公众号一时间获取哦~

奶爸的编程之路,也就一周冷个三天 1134

在 SAP 中修改 Profile 文件中的主机名需要谨慎操作,需需确保所有相关配置保持一致

在SAP系统中修改Profile文件主机名需谨慎操作,主要步骤包括:1)停止相关SAP服务;2)重命名并编辑实例级Profile文件(如ER1_D00_OLDHOST改为ER1_D00_LRPSAP),修改所有含旧主机名的参数;3)可选更新默认Profile文件;4)在Windows系统中调整注册表配置;5)验证一致性后重启服务。关键注意:保持大小写统一、修改前备份文件、集群环境需同步所有节点。通过系统日志确认新主机名生效且无报错。

金牌架构师 1049

( 译、持续更新 ) JavaScript 上分小技巧(四)

后续如有内容,本篇将会照常更新并排满15个知识点,以下是其他几篇译文的地址: 第一篇地址:( 译、持续更新 ) JavaScript 上分小技巧(一) 第二篇地址:( 译、持续更新 ) JavaScript 上分小技巧(二) 第三篇地址:( 译、持续更新 ) JavaScript 上分小技巧(...

147

JMeter 中实现 100 个用户在 3 秒内并发登录

通过以上配置,你可以在 JMeter 中实现 100 个用户在 3 秒内并发登录

南开大学 | 10 年 + 软件研发与测试实战 | 现任企业质控负责人 | 专注端到端交付质量 1680

前端笔记——Swiper(持续更新中)~

Swiper 是一个流行的、免费的、开源的JavaScript库,用于创建移动设备和桌面端的滑块轮播图、触摸滑动页面、图片和内容的滑动和切换效果。Swiper 可以实现多种滑动效果,如淡入淡出、平移、3D 立体翻转等,同时也支持响应式设计和自动播放等功能。Swiper 具有良好的可定制性和易用性,支持多种平台和浏览器,还提供了丰富的 API 和事件,可以轻松地实现各种复杂的滑动效果和交互动画。

Mike白的博客 4327

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

2026跨境独立站迭代终局:为什么高端卖家纷纷抛弃WordPress,转向Next.js?

不同于WP动态渲染、爬虫抓取不全的短板,Next.js的SSG静态生成模式,会在用户访问前,预生成完整HTML页面,爬虫一次性抓取全部商品信息、参数、文案、价格,收录效率、排名权重远超WP站点。今天这篇干货长文,不讲晦涩技术术语,只从流量、SEO、投放转化、安全运维、长期盈利五大跨境核心维度,讲透:为什么Next.js正在全面取代WordPress,成为跨境独立站的最优解。同样的产品,模板WP站只能卖低价走量,Next.js高端定制站,轻松支撑高客单、高溢价,这就是体验的变现能力。

YYProSrc的博客 361

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

网站模板下载网站模板源码(非SAAS)打造高端网站

文章介绍如何通过下载非SaaS网站模板源码,打造高端网站,强调模板质量、功能完善及部署环境的重要性。

weixin_42832157的博客 515

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

开源之旅:深入了解opentype.js

在前端与字体处理的世界里,有一个闪耀的明星——`opentype.js`,这是一个采用JavaScript编写的强大工具库,专门用于在浏览器及Node.js环境中读写OpenType字体文件。这个项目,以其便捷的API和全面的字体支持,成为了开发者处理复杂文本渲染需求的得力助手。 **【编程语言】** - 主要编程语言:JavaScript,兼容ES6模块与CommonJS,使之无缝融入现代前端...

gitblog_01267的博客 1066

基于Python的高端商品二手交易平台的设计与实现附源码介绍

基于Python的高端商品二手交易平台的设计与实现附源码介绍 去发现同类优质开源项目:https://gitcode.com/ 随着电子商务的蓬勃发展,二手交易市场逐渐成为新的消费热点。今天,我们就来聊聊一个基于Python的高端商品二手交易平台的设计与实现,这个项目旨在为用户带来更高效、便捷的交易体验。 项目介绍 本项目是一款利用Python编程语言、前端界面和Django技术构建的高端商品二手...

gitblog_06789的博客 348

164. Web前端网页案例——【高端的科技公司网页( 9页)】 大学生期末大作业 html5+css3+js

本实例应用html5+css3+js: jQuery动画特效、图片轮翻、三级页面、下拉菜单、悬浮菜单等。本网页支持如Dreamweaver、HBuilder、Text 、Vscode 等任意html编辑软件进行编辑修改;支持包括IE、Firefox、Chrome、Safari主流浏览器浏览。

2301_82212046的博客 1万+

344.大学生HTML期末大作业 —【高端大气的网络科技公司网页(8页)】 Web前端网页制作 html+css+js

本实例应用html+css+js: 导航菜单、图片轮翻、三级页面、悬浮菜单等。适用于大学生网页课程作业设计、公司网页制作等。本网页支持如Dreamweaver、HBuilder、Text 、Vscode 等任意html编辑软件进行编辑修改;支持包括IE、Firefox、Chrome、Safari主流浏览器浏览。

m0_67368443的博客 870

Rowhammer.js:浏览器JavaScript如何利用DRAM物理缺陷发起硬件攻击

内存安全是计算机系统安全的基石,而DRAM(动态随机存取存储器)作为核心存储部件,其物理特性直接决定了数据的可靠性。Rowhammer攻击揭示了现代高密度DRAM存在的设计缺陷:当特定内存行被高频访问时,产生的电信号干扰可能导致相邻行存储单元发生比特翻转(Bit Flip)。这一硬件层面的漏洞,传统上被认为需要本地高权限才能利用,但通过结合缓存侧信道和缓存逐出技术,攻击者成功在沙盒化的JavaScript环境中实现了远程利用。Rowhammer.js项目正是这一突破的实践体现,它通过精心设计的JavaScr

defkaug153461的博客 442

JavaScript框架有哪些?JS框架汇总,腾讯的前端面试题

除了简历做到位,面试题也必不可少,整理了些题目,前面有117道汇总的面试到的题目,后面包括了HTML、CSS、JS、ES6、vue、微信小程序、项目类问题、笔试编程类题等专题。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)一个人可以走的很快,但一群人才能走的更远!

m0_60707708的博客 546

05 JavaScript框架汇总

这里写自定义目录标题框架定义为什么使用框架功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 框架定义 “框架”指一套包含...

董绘峰的博客 1172

持续更新--Phonegap基础学习总结

1、最早phonegap出现在2008年的iPhoneDevCamp大会上,这一年它获了奖,然后开始支持Android平台,火起来了。 2、创建phonegap的主要动力来自于iphone开发的苦恼,因为每个新手都要学习Objective-C这样不熟悉的开发环境和语言。 3、phonegap框架主要作用是让Web开发人员用HTML、CSS和JavaScript知识去实现对设备的本地API访问,

大祥的专栏 525

370. 高端个人相册网站 大学生期末大作业 Web前端网页制作 html5+css+js

本实例应用html5+css+js: 导航菜单、图片轮翻效果、鼠标滑动图片旋转特效、视频、留言表单、返回主菜单按钮、注册、登录等。本网页支持如Dreamweaver、HBuilder、Text 、Vscode 等任意html编辑软件进行编辑修改;支持包括IE、Firefox、Chrome、Safari主流浏览器浏览。

A240307的博客 5706

365.高端大气的网络建站公司响应式网页 大学生期末大作业 Web前端网页制作 html5+css+js

本实例应用html5+css+js: 导航菜单、图片轮翻效果、无缝滚动插件、鼠标滑动特效等。适用于大学生网页课程作业设计、公司网页制作等。响应式布局可以根据不同的设备屏幕大小自动调整页面布局,提高用户体验;本网页支持如Dreamweaver、HBuilder、Text 、Vscode 等任意html编辑软件进行编辑修改;支持包括IE、Firefox、Chrome、Safari主流浏览器浏览。

A240307的博客 1042
上一篇: 聊聊数学期望
下一篇: 谈谈可视化编程 (转)
xosg
xosg 领域专家: 网络协议与安全技术领域 领域专家: 网络协议与安全技术领域
博客等级 码龄9年 1986粉丝 864原创
评论 22
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xosg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值