JavaScript的几个概念摘录。

Posted chentianwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript的几个概念摘录。相关的知识,希望对你有一定的参考价值。

ES201X是javascript的一个版本。

 

ES2015新的feature

新的声明类型let, const,配合Block Scope。(if, forEach,)

之前:

var,  Global scope和function scope。

之后:

let, const , 这2个类型声明用在Block Scope内。

 

声明一次还是多次?

let, const只能声明一次。但var声明可以反复声明:

const num = 5;
const num = 7; // SyntaxError: identifier ‘num‘ has already been declared

var x = 2; // x = 2
var x = 4; // x = 4

 

 

const 用于不会改变的值。

??const x = {} , 可以改变其内的属性值,或增加新的key/value对儿。

这是因为,const variables当处理arrays 或objects时会改变,

技术上讲,不是再分配一个新的值给它,而是仅仅改变内部的元素。

const farm = [];
farm       = [rice, beans, maize] // TypeError: Assignment to constant variable

//但可以
farm.push(rice)

 

 

Hoisting

Declarations will be brought to the top of the execution of the scope!

?? var x = "hello" 这种声明加分配assign的写法无法Hoisting!!

函数声明也可以Hoisting.

 


Closures

lexical or function closures.

用于把函数和周围的state(var, const, let声明的变量,函数。)绑定一起使用。

换句话说,closure给你入口进入到函数作用域外面的区域,并使用这个区域的变量,函数。

function jump() {
  var height = 10;

  function scream() {
    console.log(height);
  }

  return scream;
}

var newJump = jump()  //function runs but doesnot log anything

newJump();  //logs 10

在函数jump中声明了height, 它只存在于函数作用域内。

通过Closure, 函数scream得到了height。

执行函数jump, 并把函数scream存入一个新的变量newJump, 这个newJump就是一个函数

执行newJump(), 就是执行scream。 而scream可以引用jump内的height。

JavaScript所做的是保持一个对原始作用域的引用,我们可以使用它和height变量

这个引用就叫做closure。

 

另一个例子:

function add (a) {
  return function (b) {
    return a + b
  };
}

// use
var addUp7  = add(7)
var addUp14 = add(14)

console.log (addUp7(8)); // 15
console.log (addUp14(12)); // 26

 

addUp7和addUp14都是closures。

例如:

addup7创造了一个函数和一个变量a。a的值是7。

执行addUp7(8), 会返回a + 8的结果15。

 

以上是关于JavaScript的几个概念摘录。的主要内容,如果未能解决你的问题,请参考以下文章

常用的几个JQuery代码片段

几个有用的JavaScript/jQuery代码片段(转)

Maven常用的几个核心概念

Maven学习总结(21)——Maven常用的几个核心概念

JavaScript 中Array数组的几个内置函数

Spring AOP中的几个概念