JavaScript 从 Java 中借用其大部分语法,但也受 Awk,Perl 和 Python的影响。因此本篇博客基于对Java和Python的认识来记录JavaScript的差异点。
JavaScript总共有六种基本数据类型
true
和 false
.null
与 Null
、NULL
或其他变量完全不同。42
或者 3.14159。
在bool运算中,null和undefined都等价于false
除了六种基本数据类型之外,还有复合的object类型。
${name}代码
let x = 'world'
let z = `hello ${x}`
console.log(z) // 输出hello world
两个连续加号表示自增操作,两个连续减号表示自减操作。借鉴于Java。
以自增操作为例:
console.log( ‘3’ == 3); // == 转化为相同类型之后再比较值,也就是不比较类型
console.log( ‘3’ === 3); // === 值和类型都比较,所以常用===
!= 和 !== 的规则同 == 和 === 的规则
let x = 3; {
let x = 4;
console.log(`x in block is ${x}`); // x=4
}
console.log(`x is ${x}`) // x=3
let x = 3; {
x = x + 1
console.log(`x in block is ${x}`) // x=3 外层变量可以传入内层
}
console.log(`x is ${x}`) // x=3
if语句
if (condition_1) {
statement_1;
}
[else if (condition_2) {
statement_2;
}]
...
[else if (condition_n_1) {
statement_n_1;
}]
[else {
statement_n;
}]
switch语句
和java类似
switch (expression) {
case label_1:
statements_1
[break;]
case label_2:
statements_2
[break;]
...
default:
statements_def
[break;]
}
c风格for循环和两种while循环的区别都是c语言风格的,Java也类似。再次单独介绍for..in和for..of循环
for..in和for..of循环
for of是ES6新加的语法,用来遍历数组元素值,而for in是用来遍历对象的索引。代码如下:
// for in会遍历对象所有的属性,即会遍历数组的元素以及属性
let myArray = [1, 2, 3, 4, 5, 6, 7]
myArray.name = "数组"
for (let index in myArray) {
console.log(myArray[index]); // 会输出myArray的name属性
}
// for of遍历的只是数组内的元素,而不包括数组的原型属性method和索引name
let myarray = [1, 2, 3, 4, 5, 6, 7]
myarray.name = '数组'
for (let value of myarray) {
console.log(value)
}
JavaScript的解构借鉴于Python,但是和Python相比JavaScript的解构更加强大。
Array解构
// 普通解构
arr = [1, 2]
const [a, b] = arr
console.log(a, b) // 输出1 2
// 普通解构支持默认值
arr = [1]
const [a=3, b=4] = arr
console.log(a, b) // 输出1 4
Object解构
Python不支持字典解构,但是JavaScript支持的对象解构就包含字典解构,只是在JavaScript中不叫字典。
// object 解构
obj = {
a: 1,
b: 2,
c: 3
}
const {a: A, b: B, c: C} = obj
console.log(A, B, C) // 输出1 2 3
// object 解构支持默认值
obj = {
a: 1,
b: 2,
c: 3
}
const {a: A, b: B, c: C, d: D = 18} = obj
console.log(A, B, C, D) // 输出1 2 3 18
嵌套解构
// 嵌套解构
arr = [1, [2, 3], 4]
const [a, [b, c ,d = 18]] = arr
console.log(a, b, c, d) // 输出1 2 3 18
更复杂的嵌套解构如下(MDN上的一个例子):
// 解构Json文件
const metadata = {
title: "Scratchpad",
translations: [
{
locale: "de",
localization_tags: [ ],
last_edit: "2014-04-14T08:43:37",
url: "/de/docs/Tools/Scratchpad",
title: "JavaScript-Umgebung"
}
],
url: "/en-US/docs/Tools/Scratchpad"
};
const {title: Title, translations: [{title: TransTitle}]} = metadata
console.log(Title, TransTitle) // 输出Scratchpad JavaScript-Umgebung
参考资料