Browsed by
标签:JavaScript

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
10 views
var function = function() {}

var function = function() {}

JavaScript 中,定义函数时用 var foo = function () {} 和 function foo() 有什么区别?

方法一:
var foo = function () {
//code
}
方法二:
function foo () {
//code
}

Answer:

最关键的区别在于 JavaScript 函数和变量声明的“提前”(hoist)行为。
the Google style guide 建议我们采用方法一。简单的说 如果我们使用 匿名函数
var FUNCTION_NAME = function() { /* FUNCTION_BODY */}; 

这种方式, 编译后变量声明FUNCTION_NAME 会“被提前”了,但是他的赋值(也就是FUNCTION_BODY)并不会被提前。
也就是,匿名函数只有在被调用时才被初始化。

如果我们使用

function FUNCTION_NAME () 
{ /* FUNCTION_BODY */}; 

这种方式, 编译后函数声明和他的赋值都会被提前。
也就是说函数声明过程在整个程序执行之前的预处理就完成了,所以只要处于同一个作用域,就可以访问到,即使在定义之前调用它也可以。

请先看一个例子

function hereOrThere() { //function statement
  return 'here';
}

alert(hereOrThere()); // alerts 'there'

function hereOrThere() {
  return 'there';
}

我们会发现alert(hereOrThere) 语句执行时会alert(‘there’)!这里的行为其实非常出乎意料,主要原因是 JavaScript 函数声明的“提前”行为,简而言之,就是 Javascript允许我们在变量和函数被声明之前使用它们,而第二个定义覆盖了第一种定义。换句话说,上述代码编译之后相当于

function hereOrThere() { //function statement
  return 'here';
}

function hereOrThere() {//申明前置了,但因为这里的申明和赋值在一起,所以一起前置
  return 'there';
}

alert(hereOrThere()); // alerts 'there'

强烈推荐阅读下面文章, JavaScript 中对变量和函数声明的“提前(hoist)”

再看下面一个例子:

var hereOrThere = function() { // function expression
  return 'here';
};

alert(hereOrThere()); // alerts 'here'

hereOrThere = function() {
  return 'there';
};

这里就是我们期待的behavior,这段程序编译之后相当于:

var hereOrThere;//申明前置了

hereOrThere = function() { // function expression
  return 'here';
};

alert(hereOrThere()); // alerts 'here'

hereOrThere = function() {
  return 'there';
};

参考 Frequently Misunderstood JavaScript Concepts The Syntax for Defining a Function is Significant

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
366 views
2016年JavaScript领域中最受欢迎的“明星”们

2016年JavaScript领域中最受欢迎的“明星”们

https://news.cnblogs.com/n/562376/

2016 年最受欢迎的项目

概述

通过一年中最热门的 10 个项目,由此可以很好地了解 2016 年的 Web 开发环境,因为您会发现:

以上展现了 2016 年中, JavaScript 表现出了无处不在,功能多样的特性。

而 2016 年的王者是……

Vue.JS 项目在去年的 Github 上获得了超过 25,000 颗星标,将包括 React 和 Angular 的其他框架甩在身后,一骑绝尘。

10 月发布的 Veu.JS 的版本2,带来了虚拟 DOM 的性能。

Vue.JS 用于大公司(包括阿里巴巴,中国最大的电子商务公司)的生产,所以你可以认为它是一个安全的选择。

它已经有一个相当成熟的生态系统,包括路由(vue-router)和状态管理库(Vuex)。

看来 Vue.JS 采用了最好的 React(组件方法)和 AngularJS(模板是 html 代码增强的框架特性)。

-end-

跳至工具栏