javascript笔记 (持续更新)

1. 语言主要分为两大类:编译型语言解释型语言

对于静态语言来说(如Java、C++、C),处理上述这些事情的叫编译器(Compiler),相应地对于JavaScript这样的动态语言则叫解释器(Interpreter)。

这两者的区别用一句话来概括就是:

编译器是将源代码编译为另外一种代码(比如机器码,或者字节码),而解释器是直接解析并将代码运行结果输出。我们常用的firebug就是一个JavaScript解释器。

2. JavaScript引擎解析脚本时, “预编译” 阶段。

首先会创建一个环境的上下文对象,然后把使用var声明的变量,作为上下文对象的属性,以undefined先行初始化使用function关键字声明的函数,也作为上下文对象的属性,定义出来,而函数则保留了定义的内容。----在这个过程中,函数定义的优先级 高于 变量定义

3.立即执行函数+闭包

 1 var addFn = (function() {
 2   var i = 1;
 3   return function() {
 4     console.log(++i);
 5   }
 6 })()
 7 
 8 addFn();  //2
 9 addFn();  //3
10 addFn();  //4
11 addFn();  //5
12 addFn();  //6

4.区分

函数申明 ->  function(){}

函数表达式 -> (function(){})

所以IIFE的两个括号的作用:

//第一个圆括号:将匿名函数转换为函数表达式。
//第二个圆括号:立即执行匿名函数

5.封装的意义:

不让别人改自己的封装的东西, 如果想让别人改的东西, 我们提供相应接口, 别人才能改

6.递归:

特征 -> 1.函数调用自身   2.递归入口    3.递归出口

eg. 递归实现 1加到10的和

1 function add(n) {
2   if (n===1){
3     return 1;
4   } else {
5     return n + add(n-1);
6   }
7 }
原文地址:https://www.cnblogs.com/spotman/p/10398682.html