原文来自DZone:Why I Like JavaScript
以下是中文翻译版本。
每种编程语言都有其独特性和挑战性。当涉及到JavaScript时,它可能有更多的古怪之处。它本身不仅是语言,而且还支持浏览器。多年来,不同的供应商实现了略有不同的JavaScript引擎。这带来了很多挑战。我自己应对这些挑战。多亏了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功能。还有其他一些很棒的功能,例如Promises,Classs和其他对象方法。但是,上述功能极大地改变了我的日常编码,因为我以一种更具表现力的方式编写了更少的代码。
JavaScript一直是为人诟病,但它的性能得到了显着改善。可以简单地接受这些奇怪的部分并避免它们。