你能够从未应用过的11+个JavaScript特点(小结)

发布时间:2020-01-11 08:44 来源:互联网 以后栏目:网站办事器

重要

这篇文章中描述的大年夜多半功能已被暂停应用(乃至不推荐应用)。 它们依然在很多图书中很罕见,是以值得进修。

一、逗号运算符

, 是用于分隔表达式并前往链中最后一个表达式的运算符。

let oo = (1, 2, 3)
console.log(oo) // 3

这里有三个重要表达式 1 、 2 和 3。一切这些表达式均被求值,最后一个赋给 oo。

我们在 for 轮回中看到这个:

for(let i = 0, ii = 1; i< 10; i++, ii--) { ... }

当我们要编写短的 lambda 函数时,这会派上用处:

const lb = (a, b, arr) => (arr.push(a*b), a*b)

这里有两个语句,第一个将乘法成果推入数组arr,第二个将乘数a和b推入数组。 第二个成果就是前往给调用者的内容。

关于三元运算符,它也很有效,由于与短lambda语法雷同,它仅接收表达式而不是语句。

2、in

in 是用于检查对象中属性能否存在的关键字。 我们在 for..in 轮回中应用了它,但没无认识到,其实 in 也是一个关键字:)
假设对象上存在属性,则 in 将前往 true ,不然将前往 false。

const o = {
  prop: 1
}
console.log("prop" in o) // true

看,in 可以自力应用,而不是在 for..in 中。

它将检查 "prop" 能否可作为 o 对象中的属性应用。 它前往 true ,由于我们在 o 中定义了 "prop" 属性。

假设我们检查未定义的属性:

const o = {
  prop: 1
}
console.log("prop1" in o) // false

它前往 false ,由于 "prop1" 在 o 中未定义。

3、Array 构造函数

你知道我们可以不应用传统办法定义数组吗?

const arr = [1, 2, 3]

怎样样?

我们也能够应用 Array :

const arr = new Array(1, 2, 3)

传递给 Array 构造函数的参数的分列将构成其索引的基本。

1 是第一个参数,其索引为 0; 2 是第二个参数,其索引为 1; 3 是第三个参数,其索引为 2。

arr[0] // 1
arr[1] // 2
arr[2] // 3

所以,

const arr = new Array(1, 2, 3)


const arr = [1, 2, 3]

表达的是一个意思。

但应用 new Array() 有一个成绩,例如:

var a = new Array(10, 20);
a[0] // 前往 10
a.length // 前往 2

但:

var a = new Array(10);
a[0] // 前往 undefined
a.length // 前往 10

当你仅给 Array 构造函数一个整数(大年夜于等于 0 的整数,不然将会报错)时,才会产生这类情况。 这是为甚么喃?

其实,新的 Array 构造函数正在从某些编程说话中提取思维,在这些说话中,你须要为数组指定内存,如许就不会出现 ArrayIndexOutOfBounds 异常。

int *a = (int *) malloc( 10*sizeof(int) ); // ya ol' c
int *a = new int[10]; // c++
int[] a = new int[10]; // java

是的,它实际上是在创建一个长度为 10 的数组。我们在 Javascript 中没有 sizeof 函数,然则 toString 足以证明这一点。

  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、
  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、