11 种糟糕的 JavaScript 编写方式( 二 )


// not recommendedlet x =1 let y =2 // recommendedlet x =1 ; let y =2 ;在上面的代码中 , 第一个示例省略了分号 , 这可能会导致一些意外行为 。第二个例子显式添加了分号 , 更加规范 。
7. 使用 for-in 循环for-in 循环是一种遍历对象属性的方法 , 但它有一些缺点 。因为它不仅会遍历对象本身的属性 , 还会遍历从原型链继承的属性 , 这可能会导致一些意想不到的结果 。
const person = {name :"Alice" ,age :30 ,gender :"female" }; // not recommended for ( const key in person) {console . log (person[key]); } // recommended Object . keys (person). forEach (key =>console . log (person[key]));上面代码中 , 第一个例子使用for-in循环遍历对象属性 , 而第二个例子使用Object.keys()方法获取对象自身的属性名 , 并配合forEach()方法来获取 遍历 。
8.比较NaNNaN 是一种特殊类型的数值 , 表示Not-a-Number(不是数字) 。但是 , 由于 NaN 不等于任何值 , 所以在比较 isNaN() 时需要用一个函数来判断 。
// not recommendedif (x == NaN) {// do something}// recommendedif (isNaN(x)) {// do something}上面代码中 , 第一个例子错误地使用了相等运算符来比较NaN , 而第二个例子使用了isNaN()函数来进行判断 。
9.使用eval() eval() 是一种执行字符串代码的方法 , 但它容易引起安全问题和性能问题 。因此 , 最好避免在生产环境中使用 eval() 。
// not recommendedeval("console.log('Hello, world!')");// recommendedconst code = "console.log('Hello, world!')";Function(code)();在上面的代码中 , 第一个示例使用 eval() 函数来执行字符串代码 , 而第二个示例使用 Function() 函数来创建一个新函数并执行它 。
10.忽略错误处理忽略错误处理是一个常见的错误 , 因为它会导致代码崩溃 。例如:
try {// some code } catch (e) {}虽然抛出异常的这段代码可能无关紧要 , 但如果异常处理不当 , 它可能会在开发或运行时导致问题 。
为了避免这个问题 , 我们应该始终正确处理异常 , 例如通过记录或显示用户友好的错误消息 。
11. 传递函数参数时忘记绑定this将函数作为参数传递时 , 需要注意绑定this的值 。例如:
const obj = {name :'Alice' ,greet :function () {console . log ( 'Hello, '+this .name);} }; setTimeout (obj. greet, 1000 ); // Hello, undefined正确的写法应该是使用bind方法:
const obj = {name :'Alice' ,greet :function () {console . log ( 'Hello, '+this .name);} }; setTimeout (obj. greet . bind (obj), 1000 ); // Hello , Alice结语JavaScript 是现代 Web 开发不可或缺的一部分 , 它为我们提供了丰富的功能和灵活性 , 在编写 JavaScript 代码时 , 我们应该尽量保持代码的可读性、简洁性和可维护性 , 以便构建出色的 Web 应用程序 。

【11 种糟糕的 JavaScript 编写方式】


推荐阅读