ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
为什么建议学习 ES6?
先从我的经历说起吧!小编大二的时候,开始接触 web 开发,那时候 web 开发技术栈基本上是 php+html+Javascript, JavaScript 功能十分强大,但是学习曲线非常陡峭,对新手不够友好。
后来,我上研究生的时候,Python 凭借大数据火了,我的主流开发语言就变成 Python 了。与此同时,前端也迎来了从 MVC 架构到 MVVM 架构的变革,出现了组件化开发,前后端分离开发, SPA 单页应用等新概念,产生了代表性的框架 Vue, React 等,在 Facebook、阿里、腾讯等大厂得到了大规模应用。使用这些框架不必再去了解晦涩难懂的原生 JavaScript 了,就像当初 jquery 代替原生的 JavaScript 一样。而这些前端框架几乎都是基于 ES6 的,改版后的ES6, 上手难度大大减小。
React vs Vue
从本科到研究生,再到现在工作,Python 和 ES6 一直是我最喜欢的语言。
我选择这两个语言搭配的理由是:
- Python+ES6 配合使用,基本算一个全栈工程师了,本人也算半个全栈吧,使用这两个语言能让我够轻松应对爬虫、前端、后端、机器学习、NLP 开发等日常工作。掌握一些前端的技术,是十分有用的,毕竟有时候,算法再酷,也需要产品包装一下。研究生期间,这套技能组合,让我接到了一些业余的小项目,现在工作了,虽然自己是 NLP 算法工程师,但有过排期经验的都懂,一个需求下来就是一个月,因此偶尔也会自己去撸 demo。
ES6
语言容易上手,因为很多语法都是借鉴Python
的。说出来可能有些夸张,我压根没有系统的去学习ES6
,做项目的时候,看一看别人的例子,很多代码直接就写出来了,很多语法按照Python
的理解,基本上都能猜出来。
为了解释为何ES6
学习成本如此之低,我找到一篇博客,整理的非常好:https://blog.logrocket.com/how-python-can-help-you-learn-es6/
程序员最讨厌的两件事:不写注释和写注释
之所以没有做更多的注释,除了想偷个懒之外,我觉得把两个语言放在一起,代码的意思不言自明。
基本数据类型对比
基本数据类型
数组/列表操作
// JavaScript
let arr = [1,2,3,4,5]
arr.push(5)
console.log(arr) // [1,2,3,4,5,5]
arr.pop()
console.log(arr) // [1,2,3,4,5]
# Python
l = [1,2,3,4,5]
l.append(5)
print(l) // [1,2,3,4,5,5]
l.pop()
print(l) // [1,2,3,4,5]
字符串切片
// JavaScript
let s = '123456'
console.log(s.split('')) // ["1", "2", "3", "4", "5", "6"]
# Python
s = '123456'
print(s.split('')) / ["1", "2", "3", "4", "5", "6"]
变量定义对比
// JavaScript
let coerced = 1;
let concatenated = coerced + 'string';
# Python
not_coerced = 1
concatenated = str(not_coerced) + 'string'
函数对比
// JavaScript
function drSeuss(catInTheHat, thing1, thing2) {
if (catInTheHat == true &&
thing1 == true &&
thing2 == true) {
console.log('is cray');
} elseif (catInTheHat != true) {
console.log('boring');
} else {
console.log('so boring');
}
}
# Python
def dr_seuss(cat_in_the_hat, thing1, thing2):
if cat_in_the_hat == Trueand
thing2 == Trueand
thing2 == True:
print'is cray'
elif cat_in_the_hat != True:
print'boring'
else:
print'so boring'
模板字符串对比
// JavaScript
let exclamation = 'Whoa!';
let sentence = `They are really similar to Python.`;
console.log(`Template Literals: ${exclamation} ${sentence}`);
# python
print'打印: {} {}'.format('Whoa.', 'Quite!')
# 打印: Yup. Quite!
参数默认值对比
// JavaScript
function nom(food="ice cream") {
console.log(`Time to eat ${food}`);
}
nom();// Time to eat ice cream
# Python
def nom(food="ice cream"):
print'Time to eat {}'.format(food)
nom() # Time to eat ice cream
类对比
// JavaScript
class Mammal {
constructor() {
this.neocortex = true;
}
}
class Cat extends Mammal {
constructor(name, years) {
super();
this.name = name;
this.years = years;
}
eat(food) {
console.log('nom ' + food);
}
}
# Python
class Mammal(object):
neo_cortex = True
class Cat(Mammal):
def __init__(self, name, years):
self.name = name
self.years = years
def eat(food):
print'nom %s' % (food)
fry_cat = Cat('Fry', 7)
fry_cat.eat('steak')
模块导入对比
# JavaScript
import { myvar, myfunc } from"./mymodule";
console.log(myvar);
myfunc();
# Python
from mymodule import myvar, myfunc
print myvar
myfunc()
后记
最近在看 Martin Fowler 的经典老书《重构 改善既有代码的设计》,第一版 2003 年出版,用的是 Java 来讲解的,2019 年第二版发布了, 并用 JavaScript 语言重写了代码范例,读起来就像看 Python 代码一样浅显易懂,感兴趣的可以翻一翻。
重构(第2版)全彩精装版
扫码下图关注我们不会让你失望!