JavaScript字符串转数字的5种方法及其陷阱
摘要 :JavaScript 是一个神奇的语言,字符串转数字有 5 种方法,各有各的坑法!
原文: Converting Strings to Number in Javascript: Pitfalls译者: Fundebug本文采用意译,版权归原作者所有
String 转换为 Number 有很多种方式,我可以想到的有 5 种!
parseInt(num); // 默认方式 (没有基数)parseInt(num, 10); // 传入基数 (十位数)parseFloat(num); // 浮点数Number(num); // Number 构造器~~num; //按位非num / 1; // 除一个数num * 1; // 乘一个数num -0 + // 减去0 num; // 一元运算符 "+"
选择哪一种呢?什么时候选择它?为什么选择这种它?我们逐一进行分析,并解析每种方式的常见陷阱。
parseInt根据 JsPerf.com 的基准测试,大多数浏览器对 parseInt 的响应最佳。虽然它是最快的方式,但使用 preseInt 会碰到一些常见陷阱 ...
Linux配置gitee的ssh
Gitee 提供了基于SSH协议的Git服务,在使用SSH协议访问仓库之前,需要先配置好账户/仓库的SSH公钥。
你可以按如下命令来生成 sshkey:
ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com" # Generating public/private ed25519 key pair...
注意:这里的 xxxxx@xxxxx.com 只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱。现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱。
按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/id_ed25519.pub 文件内容,获取到你的 public key
cat ~/.ssh/id_ed25519.pub# ssh-ed25519 AAAAB3NzaC1yc2EAAA ...
解决canvas无法toDataURL
由于跨域, 画布被污染,不能调用 toBlob(), toDataURL() 或getImageData() 方法,调用它们会抛出安全错误。
DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
首先给img元素添加crossOrigin属性,图片本身的crossOrigin值为default
crossOrigin/CORS | 同域 | 跨域无 CORS | 跨域有 CORS default | 支持 | 支持渲染,不支持 toDataURL | 支持渲染,不支持 toDataURL anonymous | N/A | 同上 | 支持渲染,支持 toDataURL use-credentials | N/A | 同上 | 支持渲染,不支持 toDataURL
此时可以解决canvas无法使 ...
微信分享图文链接
新建H5页面,给H5页面授权网页授权文档
2. 使用微信JS-SDK配置给H5页面注入权限#### 微信 JS 接口签名校验工具用来测试签名是否正确
JS-SDK使用文档代码如下
wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: 'wx5*****4cac9e', // 必填,公众号的唯一标识 timestamp: 1648093192, // 必填,生成签名的时间戳 nonceStr: '1648093192', // 必填,生成签名的随机串 signature: '04bb225123************167d41bd291',// 必填,签名 jsApiList: [ 'onMenuShareAppMessage', 'onMenuShareTimeline', ...
纯前端下载Excel文件
项目需求,下载一个Excel文件,我把文件放在了代码里,加个按钮点击就可下载,因为就一个很小的文件,没必要让后端做,目前最简单的方法就是用a 标签
<a href="文件地址xxx.xlsx" download="文件名.xlsx">
加 download 属性是因为有个情况,比如txt,png,jpg等这些浏览器支持直接打开的文件是不会执行下载任务的,而是会直接打开文件,这个时候就需要给a标签添加一个属性“download”;
最最关键的地方来了:文件放的位置和文件的地址这两是最大的坑。
一、文件放的位置:
我们在写vue的时候,代码都在 src 文件夹里面,但是要下载的文件不能放在这里面,要放在同级的静态文件夹下,如 public 文件夹
别人的文章里写的是 static 文件夹,但是我的没生效,不知道什么原因。
二、文件地址的引用:
需要下载的路径是相对于index.html文件路径 否则会提示下载文件未找到。
上面这句话里:路径是相对于 index.html 的文件路径,一开始没搞懂,写的路径都是我的代码的相对路径,如:. ...
Vite环境之配置环境变量
环境变量在根目录新建.env.[mode]文件
.env # 所有情况下都会加载.env.local # 所有情况下都会加载,但会被 git 忽略.env.[mode] # 只在指定模式下加载.env.[mode].local # 只在指定模式下加载,但会被 git 忽略
加载的环境变量也会通过 import.meta.env 暴露给客户端源码。import.meta.env的值为
{ BASE_URL: "/" DEV: true MODE: "development" PROD: false SSR: false VITE_BASE_URL: "http://localhost:3010" // 配置了模式文件之后,vite会将所有有效变量添加到env中}
为了防止意外地将一些环境变量泄漏到客户端,只有以 VITE_ 为前缀的变量才会暴露给经过 vite 处理的代码。例如下面这个文件中:
DB_PASSWORD=foob ...
JS之正则匹配RegExp
使用的方法使用正则表达式的方法
exec 一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回 null)。
let str = ''str = 'get hello world'let reg = /get/glet r = reg.exec(str)console.log(r); // [ 'get', index: 0, input: 'get hello world', groups: undefined ]
test 一个在字符串中测试是否匹配的RegExp方法,它返回 true 或 false。match 一个在字符串中执行查找匹配的String方法,它返回一个数组,在未匹配到时会返回 null。matchAll 一个在字符串中执行查找所有匹配的String方法,它返回一个迭代器(iterator)。search 一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。replace 一个在字符串中执行查找匹配的String方法,并且使用 ...
单向数据流和双向数据流
数据流数据流,表明的是数据流向或数据传递。
一、单向数据流1. 什么是单向数据流?单向数据流(Unidirectional data flow)方式使用一个上传数据流和一个下传数据流进行双向数据通信,两个数据流之间相互独立。单向数据流指只能从一个方向来修改状态。
2. Vue 中的单向数据流对于 Vue 来说,组件之间的数据传递具有单向数据流这样的特性。
父组件总是通过 props 向子组件传递数据;
所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定;
父级 prop 的更新会向下流动到子组件中,但是反过来则不行;
这样会防止从子组件意外改变父级组件的状态,从而导致你的应用的数据流向难以理解;
每次父级组件发生更新时,子组件中所有的 prop 都将会刷新为最新的值;
这意味着不应该在一个子组件内部改变 prop。如果这样做,Vue 会在浏览器的控制台中发出警告。
3. 单向数据流 - 优点
所有状态的改变可记录、可跟踪,源头易追溯;
所有的数据,具有唯一出口和入口,使得数据操作更直观更容易理解,可维护性强;
当数据变化时,页面会自动变化
当你需要修改状态,完全 ...
adb报错文档
原因
安卓系统未打开adb网络调试功能
通过USB方式连接到安卓系统设置即可
解决
先通过USB线连接
adb devices 能看到所连接的设备情况下
adb root 权限提权(如果已经root可以无视)
adb shell 进入到安卓系统的shell
setprop service.adb.tcp.port 5555 设置adb服务端口为5555, 打开adb网络调试功能
exit 退出shell
adb tcpip 5555
拔掉USB线
adb connect x.x.x.x:x连接即可
出现的问题
在android 10情况下,adb root失败
adb root// adbd cannot run as root in production builds
解决方案: https://github.com/evdenis/adb_rootAndroid 9/10 only. Will not work on Android 11.
ADB命令
常用命令用于速查,都是经常需要用到的,没有接触过adb命令从第二节开始看,对每个命令有详细解释。
1. 常用命令adb devices #查看连接设备adb -s cf27456f shell # 指定连接设备使用命令adb install test.apk # 安装应用adb install -r demo.apk #安装apk 到sd 卡:adb uninstall cn.com.test.mobile #卸载应用,需要指定包adb uninstall -k cn.com.test.mobile #卸载app 但保留数据和缓存文件adb shell pm list packages #列出手机装的所有app 的包名adb shell pm list packages -3 #列出除了系统应用的第三方应用包名adb shell pm clear cn.com.test.mobile #清除应用数据与缓存adb shell am start -ncn.com.test.mobile/.ui.SplashActivity #启动应用adb shell dumpsys package #包 ...