💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] ## 1. 不要重复定位元素 ![](https://box.kancloud.cn/8ce18d82aa4b2ce4f96e5b65407df883_1400x133.png) ## 2. 健壮性问题 1. 必须加var 2. 获取值时,判断是否有这个值,有值不是undefined ![](https://box.kancloud.cn/280d7398086458d2051d512abe3c1df8_1362x124.png) ## 3. 相等判断 ### 3.1 === “===”首先计算其操作数的值,然后比较这两个值,比较过程没有任何类型转换 1. 如果两个值类型不相同,则它们不相等。 2. 如果两个值都是null或者都是undefined,则它们不相等。 3. 如果两个值都是布尔值true或false,则它们相等。 4. 如果其中一个值是NaN,或者两个两个值都是NaN,则它们不相等。NaN和其他任何值都是不相等的,包括它本身!!!通过x!==x来判断x是否为NaN,只有在x为NaN的时候,这个表达式的值才为true。 5. 如果两个值为数字,且数值相等,则它们相等。如果一个为0,另一个为-0,则它们同样相等。 6. 如果两个值为字符串,且所含的对应位上的16位数完全相等,则它们相等。如果它们的长度或内容不同,则它们不等。两个字符串可能含义完全一样且所显示出手字符也一样,但具有不同编码的16位值。JavaScript并不对Unicode进行标准化的转换,因此像这样的字符串通过"==="和"=="运算符的比较结果也不相等。 7、如果两个引用值同一个对象、数组或函数,则它们是相等的。如果指向不同的对象,则它们是不等的。尽管两个对象具有完全一样的属性。 例如 var param1= ‘1’, param2 = ‘1’ ; param1 === param2; //类型和数值同时相等 true var param3 = 1; param1 === param3; //类型不相等和数值相等false var param4 = 2; param1 === param4; //类型和数值都不相等 false var param1 = null, param2 = undefined; param1 === param2; //false 1. === 表示恒等,首先比较两边的变量数据类型是否相等,其次比较两边的变量的数值是否相等 2. == 表示相等即仅仅比较两边变量的数值是否相等。 3. === 首先计算其操作数的值,然后比较这两个值,比较过程没有任何类型转换 ![](https://box.kancloud.cn/e21a0652b8691ebb095cd8d4edbf9943_1407x288.png)