beace lee的博客

周日被我射熄火了,现在是周一

【摘抄】You Don't Need jQuery (选自 https://travis-ci.org/oneuijs/You-Dont-Need-jQuery)

前端发展很快,现代浏览器原生 API 已经足够好用。我们并不需要为了操作 DOM、Event 等再学习一下 jQuery 的 API。同时由于 React、Angular、Vue 等框架的流行,直接操作 DOM 不再是好的模式,jQuery 使用场景大大减少。本项目总结了大部分 jQuery API 替代的方法,暂时只支持 IE10+ 以上浏览器。

JavaScript Arguments

上一次说到了JavaScript中加引号和不加引号的区别,已经认知到了在大体上还是没有区别的。这里我将深入的了解JavaScript函数中的arguments对象,将其运用到实战。

JavaScript一些有趣的地方

Array-like

所谓的Array-like,即类数组。其实并不是数组,但是可以像数组一样的进行访问,在这里,仅仅是写法上的一致。其实并不是数组。

对象(Object)

var a = {a: "a"};
var b = {"b": "b"};
console.log(a); //"a"
console.log(b); //"b"
  • 特殊情况不可以用的属性访问
var a = {0: "a"}; 
console.log(a.0); //Uncaught SyntaxError: Unexpected number
//竟然可以像一个数组进行访问
console.log(a[0]); // "a"
//为了以便区分,可以加上引号
console.log(a['0']) // "a"

No, the quotes do not make a difference (unless, as you noted, you want to use a key that’s not a valid JavaScript identifier).

可见,如果符合规范的定义key值,加引号和不加引号是没有区别的。如果你的key值中出现数字或者JavaScript中的关键字,可以通过加引号的方式访问obj['key']

引申

说到这里,我想引申一个东西,跟上面的对象理解(类数组)完全一致。就是JavaScript函数中的arguments参数。

arguments对象是所有JavaScript函数中的局部变量。通过arguments我们可以获取函数中的所有参数。

function getArgs(a, b) {
  console.log(arguments[0])
  console.log(arguments[1])  
}

getArgs(1, 2); // 1 2

通过上述代码,我们可以通过类似数组的方式进行参数的读取,判断等等。接下来的一篇文章将会探索arguments的真正类型以及含义。