1. Js变量名如果太相近,容易引用错误且不易发现错误!
function AAA(){
...
const [dataList, setDataList] = useState([])
...
const getDataMethods = () => {
let datasList = []
if(...){
datasList.push(item)
}
}
...
return <div>
if(datasList && datasList.length > 0 && datasList[0] !== undefined){
dataList.map( (v, index) => {
return <div>
<div>{v.name}</div>
<div>{v.age}</div>
<div>{v.sex}</div>
</div>
})
}
</div>
...
}
补充:为什么判断不是一个空数组要用 datasList && datasList.length > 0 && datasList[0] !== undefined
第一个 datasList 表示 datasList存在且定义了;
第二个 datasList.length > 0 表示数组的长度大于零,只有数组,字符串才有length属性!,布尔值的length为undefined,
let arr = true;
arr.lenght // undefined
undefined和null数据类型的length都会报错。
let arr = undefined ;arr.lenght // 报错
let arr = null ; arr.length // 报错
对象不加length,length属性为undefined;
let obj = new Object();
obj.name = "牛恒";
obj.age = 30 ;
obj.sex = "男";
obj.length // undefined
函数的length根据形参(和内部定义的变量??)决定
let fn = function(a,b, c) {let d}; // fn.length ---> 3,let 声明的变量并没有算到length
第三个 判断是否不是一个空数组,不能使用
let arr = [];
if(arr !== []){} 的做法,即便arr确实是空数组,它也绝对不等于 [],因为二者都是引用数据类型,空间地址不一样,怎么比都不一样,
因此要使用 arr[0] !== undefined的方法; 如果arr不为空数组,那么它的第一项就不是undefined,反之,如果arr是空数组,那么它的第
一项是不存在的,是为undefined。
2. 写代码要先心中有一幅画 (想好,想的差不多)
前言:如果完全没有思路或者思路根本不清晰就去写代码,那基本是写一点错一点,写一点就要改。这样的代码写出来不仅就非常费劲,而且后面业务一变说不定 之前的逻辑就完全用不了了,简而言之就是 没有想好就去写代码难写且极难维护,久而久之开发人员也容易失去信息和对工作的兴趣,可见危害之大!