反思总结


1. Js变量名如果太相近,容易引用错误且不易发现错误!

function AAA(){
    ...
const [dataList, setDataList] = useState([])
...
// 数据请求方法
const getDataMethods = () => {
    let datasList = []
    if(...){
       datasList.push(item)
    }
}
...
// 渲染
return <div>
    // 为什么会出错? 不知道起什么变量名,在给变量赋值时简单写了一个变量名(为了图方便),就有了后面的错误。
    // 错误的引用即便 原本的dataList是一个数组,这里的datasList也是is not defined 且拿不到length属性,也没有[0]这一项。
    // 所以这里的三项判断完全没有作用! 这就是变量名太相近的危害!出了错误也不易被发现。
    // 建议将变量名 以英文全量组合而成,这样可能名字很长,但却不易出错!
    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. 写代码要先心中有一幅画 (想好,想的差不多)

前言:如果完全没有思路或者思路根本不清晰就去写代码,那基本是写一点错一点,写一点就要改。这样的代码写出来不仅就非常费劲,而且后面业务一变说不定 之前的逻辑就完全用不了了,简而言之就是 没有想好就去写代码难写且极难维护,久而久之开发人员也容易失去信息和对工作的兴趣,可见危害之大!

文章作者: KarlFranz
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 reprint policy. If reproduced, please indicate source KarlFranz !
评论
  目录