前端开发中常见避坑问题(前端开发过程中遇到的难点)
zhezhongyun 2025-05-09 22:49 39 浏览
javascript
try catch捕获异常
JSON.parse、JSON.stringify、encodeURIComponent、async await 要放到 try catch 中。
new RegExp 最好也放到 try catch 中,用构造函数 new RegExp 构造正则表达式时,一般表达式中需要插入变量时只能用构造函数方式,注意里面的特殊字符需要转义,尤其是之际接收用户输入的字符,否则容易报错,如:
new RegExp('+861347', 'ig')
// 会报 SyntaxError: Invalid regular expression: /(+861347)/: Nothing to repeat数字精度问题
接口数据中比较长的 id 要用字符串,否则大数字会出现失精导致 id 对不上。
浮点数运算失精,涉及到计算的用number-precision这类计算库。
时期时间
macOS 系统下日期时间格式要用斜杠 / 代替横杠 -。
资源访问
https 下访问 http 资源会报错
replaceAll 替换字符串中内容
项目中尽量不要用 replaceAll 方法,有兼容性问题,在部分浏览器或版本里会报错(即使常用的Chrome也要大于85版本):replaceAll is not a function,替换成 replace 和正则加 g。
for循环中间的分号
for循环里的条件这个地方中间的是分号,不是逗号
for(var i = 0; i < 100; i++) {
}等号判断相等
判断是不是相等是用 == 或 ===,切记不要用 = 去判断是不是相等,一个等号是赋值。
alert方法
alert方法只能弹出一段字符串,所以默认会调用toString()方法,要弹出多个变量需要用 + 号拼接,如果用逗号分割,则只会弹出第一个变量的值。
请求接口路径中的斜杠
找了半个小时的bug,一直拿不到数据,用postman又可以:注意如果用变量拼接地址,原地址后面有/的,这个地方就不用再加了:
const baseUrl = 'http://localhost:8888/api/private/v1/'
// 有问题的
const api = `${url}/login`
// 正确的
const api2 = `/${url}/login`Math.max()
Math.max()方法是找出一串数字中的最大值(不是数组),如果直接传入数组返回的就是NaN,如果要判断数组中的最大值: ① 用ES6中的展开运算符,直接将数组中的元素展开 Math.max(…arr) ② 用apply方法改变this的指向 Math.max(null, arr)
方法中return时省略分号
javascript有自动补全功能,所以每行可以加分号也可以不加:
function foo(){
return
{
b: 2
}
}会被解析成:
function foo(){
return ;
{
b: 2
}
};所以最后的返回结果是 undefined。
map返回一个新的数组
用map遍历数组时如果是要得到一个新的数组,一定要记得return item,要不然原数组里的元素都变成undefined了。
html
标签自定义属性
自定义属性不可以通过【元素.自定义属性名】来获取,要用 getAttribute('自定义属性名')。
百度小程序template绑定数据
百度小程序模板 template 绑定数据那是3对花括号,不是2对
<template is="personCard" data="{{{...person}}}" />微信那就是2对:
<template is="msgItem" data="{{...item}}" />狗日的百度,净搞些鬼迷日眼的。
微信小程序页面节点上绑定数据
微信小程序里,wx:for="{{arr}}",这里一定要加 {{}},只有事件名才不用加双花括号,其他的只要是变量都要加,wx:key="index"(这个地方也不用加花括号)。
css
行内元素添加transform动画
transform 对于行内 inline 元素是无效的,如果要对其添加transform动画,需要先用display将行内元素变成行内块或块元素。
小程序button默认样式
小程序button去掉默认边框要设置
button::after {
border: none;
}自己设置border后行高要根据内减模型(box-sizing: border-box)来计算,里面的文字才能垂直居中。
img图片裁切 object-fit
给img标签加上
.img {
object-fit: cover;
}被替换的内容在保持其宽高比的同时填充元素的整个内容框。如果对象的宽高比与内容框不相匹配,该对象将被剪裁以适应内容框。
图片继承父盒子的宽,width: 100%,在设置object-fit: cover;不起作用,原因:要给img同时设置出宽高,才能裁切。
Tabbar导航栏定位问题
给tabbar设置position: fixed;后,不要设置left: 0;在大屏上tabbar就会跑到浏览器左下角去了,因为他是相对浏览器来做定位的。
设置背景色渐变
不是设置background-color: linear-gradient(),而是background: linear-gradient()。
自闭合标签伪元素
伪元素只有双标签才可以用,伪元素的本质是往标签元素的内部添加额外的元素,所以自闭合标签比如 img 是不能添加伪元素的。
用a标签放置网站Logo
<div class="logo">
<h1><a href="#"></a></h1>
</div>用a标签的背景图放网站logo,切记a标签是行内元素,不可以设置宽高,所以要先display: inline-block,然后设置宽高后,背景图才能显示出来,如果div是用的flex布局,a要设置成block才行。
导航栏的菜单也要注意,如果要给a设置宽高,也得先转成行内块inline-block(最好设置成block,设置成inline-block会出现其他一些问题)。
<li>
<a href=“#”>我是导航</a>
</li>用span或者i标签放置背景图时也要先改变元素显示类型,才能设置宽高。
相关推荐
- Python入门学习记录之一:变量_python怎么用变量
-
写这个,主要是对自己学习python知识的一个总结,也是加深自己的印象。变量(英文:variable),也叫标识符。在python中,变量的命名规则有以下三点:>变量名只能包含字母、数字和下划线...
- python变量命名规则——来自小白的总结
-
python是一个动态编译类编程语言,所以程序在运行前不需要如C语言的先行编译动作,因此也只有在程序运行过程中才能发现程序的问题。基于此,python的变量就有一定的命名规范。python作为当前热门...
- Python入门学习教程:第 2 章 变量与数据类型
-
2.1什么是变量?在编程中,变量就像一个存放数据的容器,它可以存储各种信息,并且这些信息可以被读取和修改。想象一下,变量就如同我们生活中的盒子,你可以把东西放进去,也可以随时拿出来看看,甚至可以换成...
- 绘制学术论文中的“三线表”具体指导
-
在科研过程中,大家用到最多的可能就是“三线表”。“三线表”,一般主要由三条横线构成,当然在变量名栏里也可以拆分单元格,出现更多的线。更重要的是,“三线表”也是一种数据记录规范,以“三线表”形式记录的数...
- Python基础语法知识--变量和数据类型
-
学习Python中的变量和数据类型至关重要,因为它们构成了Python编程的基石。以下是帮助您了解Python中的变量和数据类型的分步指南:1.变量:变量在Python中用于存储数据值。它们充...
- 一文搞懂 Python 中的所有标点符号
-
反引号`无任何作用。传说Python3中它被移除是因为和单引号字符'太相似。波浪号~(按位取反符号)~被称为取反或补码运算符。它放在我们想要取反的对象前面。如果放在一个整数n...
- Python变量类型和运算符_python中变量的含义
-
别再被小名词坑哭了:Python新手常犯的那些隐蔽错误,我用同事的真实bug拆给你看我记得有一次和同事张姐一起追查一个看似随机崩溃的脚本,最后发现罪魁祸首竟然是她把变量命名成了list。说实话...
- 从零开始:深入剖析 Spring Boot3 中配置文件的加载顺序
-
在当今的互联网软件开发领域,SpringBoot无疑是最为热门和广泛应用的框架之一。它以其强大的功能、便捷的开发体验,极大地提升了开发效率,成为众多开发者构建Web应用程序的首选。而在Spr...
- Python中下划线 ‘_’ 的用法,你知道几种
-
Python中下划线()是一个有特殊含义和用途的符号,它可以用来表示以下几种情况:1在解释器中,下划线(_)表示上一个表达式的值,可以用来进行快速计算或测试。例如:>>>2+...
- 解锁Shell编程:变量_shell $变量
-
引言:开启Shell编程大门Shell作为用户与Linux内核之间的桥梁,为我们提供了强大的命令行交互方式。它不仅能执行简单的文件操作、进程管理,还能通过编写脚本实现复杂的自动化任务。无论是...
- 一文学会Python的变量命名规则!_python的变量命名有哪些要求
-
目录1.变量的命名原则3.内置函数尽量不要做变量4.删除变量和垃圾回收机制5.结语1.变量的命名原则①由英文字母、_(下划线)、或中文开头②变量名称只能由英文字母、数字、下画线或中文字所组成。③英文字...
- 更可靠的Rust-语法篇-区分语句/表达式,略览if/loop/while/for
-
src/main.rs://函数定义fnadd(a:i32,b:i32)->i32{a+b//末尾表达式}fnmain(){leta:i3...
- C++第五课:变量的命名规则_c++中变量的命名规则
-
变量的命名不是想怎么起就怎么起的,而是有一套固定的规则的。具体规则:1.名字要合法:变量名必须是由字母、数字或下划线组成。例如:a,a1,a_1。2.开头不能是数字。例如:可以a1,但不能起1a。3....
- Rust编程-核心篇-不安全编程_rust安全性
-
Unsafe的必要性Rust的所有权系统和类型系统为我们提供了强大的安全保障,但在某些情况下,我们需要突破这些限制来:与C代码交互实现底层系统编程优化性能关键代码实现某些编译器无法验证的安全操作Rus...
- 探秘 Python 内存管理:背后的神奇机制
-
在编程的世界里,内存管理就如同幕后的精密操控者,确保程序的高效运行。Python作为一种广泛使用的编程语言,其内存管理机制既巧妙又复杂,为开发者们提供了便利的同时,也展现了强大的底层控制能力。一、P...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 教程 (33)
- HTML 简介 (35)
- HTML 实例/测验 (32)
- HTML 测验 (32)
- JavaScript 和 HTML DOM 参考手册 (32)
- HTML 拓展阅读 (30)
- HTML文本框样式 (31)
- HTML滚动条样式 (34)
- HTML5 浏览器支持 (33)
- HTML5 新元素 (33)
- HTML5 WebSocket (30)
- HTML5 代码规范 (32)
- HTML5 标签 (717)
- HTML5 标签 (已废弃) (75)
- HTML5电子书 (32)
- HTML5开发工具 (34)
- HTML5小游戏源码 (34)
- HTML5模板下载 (30)
- HTTP 状态消息 (33)
- HTTP 方法:GET 对比 POST (33)
- 键盘快捷键 (35)
- 标签 (226)
- opacity 属性 (32)
- transition 属性 (33)
- 1-1. 变量声明 (31)
