Skip to main content

原生Javascript

@zkc

什么是 JavaScript?

Java 和 JavaScript 的关系,就类似于雷锋和雷峰塔、老婆和老婆饼、印度和印度尼西亚、周杰和周杰伦之间的关系——没有实际关系。

JavaScript 是一种弱类型的面向对象的脚本语言,可以给前端页面添加逻辑和交互(利用 Node.js,也可以使用 JavaScript 编写后端)。

需要关注的地方(包括但不限于):

  • 数据类型(String, Array, Map, Set, Object, JSON)如何定义、有哪些方法。
  • null 和 undefined
  • 浅拷贝与深拷贝
  • 箭头函数
  • 函数闭包
  • 回调函数
  • const / let / var 的区别
  • promise
  • async / await
  • fetch
  • EMCAScript, DOM, BOM
  • DOM 树与 DOM 操作(在这里与 HTML/CSS 结合)
  • 如何在 HTML 中写入并执行 JS 代码?如何处理事件?如何用 JS 实现动画?

想要安装一个 JS 解释器?你的浏览器就是!按 F12 打开开发者视图,在 console 中直接输入 JS 语句吧!

JavaScript 的 COC

可以详见:代码规范及 CoC

这里给出一个(集中华传统文化大成的)反例:

HTTP

在前端,一般会使用 JS 处理网络请求。这时 HTTP 相关知识必不可少。

关注一下:

  • HTTP Request Methods (GET/POST/PUT/……)
  • HTTP Headers
  • HTTP Status Response Code
  • CORS

可以稍作了解,之后应该会有更详细的内训。

附录:JavaScript Holy Trinity

即:一个经典的js笑话

img

思考题

【1】

观察以下两段代码,它们的执行结果分别是什么(提示:闭包)?在这两段代码中,分别产生了几个闭包,闭包分别是在哪一行产生的?

function func1(){
var a = 2;
setInterval(function(){
a++;
console.log(a);
}, 2000);
}
func1();
func1();
function func1(){
var a = 2;
var f = function(){
a--;
console.log(a);
}
return f;
}
var f = func1();
f();
f();

【2】

上面的两段代码是否可能造成内存泄漏?请说明原因并指出可行的避免内存泄漏的方法。