为什么我喜欢JavaScript


每种编程语言都有其奇怪之处和挑战。说到JavaScript,它可能有更多的奇怪之处。不仅仅是语言本身,还有浏览器支持。多年来,不同的供应商实现了略有不同的JavaScript引擎。这导致了大量的挑战。我应对了这些挑战myself。多亏了jQuery,我们呼吸到了新鲜空气。不管怎样,这还不是故事的结尾。这些年来,JavaScript确实改进了很多。在这篇文章中,我将首先回顾JavaScript的怪异之处,然后尝试解释我为什么喜欢JavaScript。

奇怪的部分

我将直接讨论代码,因为演示比谈话更好。

//Comparison
x == x // returns true
x !== x // returns false

//Types
typeof NaN // returns "number"
"string" instanceof String // returns false

//Numbers
0.1+0.2==0.3 // returns false

//Parentheses matter
function f1() {
   return
   {
      name: 'my function'
   }
}
function f2() {
   return {
      name: 'my function'
   }
}
typeof f1() === typeof f2(); //false

我们可能会发现更多这样的特性,但我会保持简短。让我们关注新的语法。

好的部分

ES6是对该语言的重大更新。它引入了一个强大的语法。我使用JavaScript已经有一段时间了,但是每次我开始使用它的时候,我都更喜欢它。所以,我将回顾一下我最喜欢的功能。

默认参数

我第一次在Python中使用默认参数,它很有魅力。然而,在JavaScript中,它通过移除额外的逻辑来覆盖空情况,从而简化了代码。

function increment(i, inc = 1) {
  return i + inc;
}

箭头函数

我想不仅仅是我。每个人都喜欢箭头,它大大简化了过滤和映射的逻辑。请注意,我们有一些全新的功能,如some every。它们太棒了。你只是写得少了。

[1, 2, 3].map(i => i + 1).reduce((s, i) => s + i)
[1, 2, 3].filter(i => i % 2 == 0).sort()
[1, 2, 3].some(i => i % 2 == 0)
[1, 2, 3].every(i => i % 2 == 0)

模板字符串

模板字符串只是构建字符串的一种更好的方式。它消除了格式化字符串中固有的挑战。它还可以评估内部逻辑,尽管这样做可能不是一个好主意。

let name='Gulnihal', postId=3, commentId=5
console.log(`Hello ${name}`)
let url = `http://www.yusufaytas.com/posts/${postId}/comments/${commentId}`
console.log(url)

析构赋值

这真的很神奇。你可以摧毁物体和阵列。你可以很容易地得到你想要的财产。

const [a, ...b] = [1, 2, 3]; // a becomes 1 and b becomes [2, 3]
const {id, person} = { id: 3, person: {name: 'Gulnihal'}} // id becomes 3 and person becomes {name: 'Gulnihal'}
const newArray = [1, ...[2, 3]]; //newArray becomes [1,2,3]
//You can also destruct in a for loop
const people = [{ id: 3, person: {name: 'Gulnihal'}}]
for (var {id: id, person: {name: name}} of people) {
  console.log(`The person with id=${id} is ${name}.`);
}

我已经用新的JavaScript特性浏览了我的最爱。还有其他很棒的特性,比如承诺、类和额外的对象方法。然而,上述特性极大地改变了我的日常编码,因为我用一种更具表现力的方式编写了更少的代码。

一段时间以来,JavaScript一直是个坏家伙,但它已经有了显著的改进。人们可以简单地接受奇怪的部分并避免它们。