---恢复内容开始--- js中常见的两种函数声明方式如下: // 函数表达式 var f = function() { console.log(1); } // 直接声明 function f (){ console.log(2); } 第一种方式,函数只能在声明之后调用.因为这种方式声明的函数,是在函数运行的阶段才赋值给变量 f 的: 第二种方式,函数可以在声明函数的作用域内任一地方调用.因为这种方式,是在函数解析阶段赋值给标识符 f . 值得注意的是,当同时使用这两种方式声明同一个函数名,…
先看一段代码 var f = function g() { return 1; }; if (false) { f = function g(){ return 2; }; } alert(g()); 你知道在不同浏览器中的输出结果是什么吗? 把这段代码放到IE 6 和chorme,firefox里面是完全不同的效果,ie6里面会输出2,chorm以及firefox会输出g没有定义,这是JScript的bug(微软给自己的javascript起名为JScript),IE6未能正确区分哪个是函数声…
在定义函数时,我们一般使用下面这两种方法: 使用函数声明定义: function sum (a, b) { return a + b; } 使用函数表达式定义: var sum = function (a, b) { return a + b; } 调用方法都是一样的: 如求“1+1”等于几:alert(sum(1, 1)); 但这两种方法还是有区别的.解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁.解析器会率先读取函数声明,并使其在执行任何代码之前可用:而函数表达式,则必须…
在定义函数时,我们一般使用下面这两种方法: 使用函数声明定义: 1 2 3 function sum (a, b) { return a + b; } 使用函数表达式定义: 1 2 3 var sum = function (a, b) { return a + b; } 调用方法都是一样的: 如求“1+1”等于几: 1 alert(sum(1, 1)); 但这两种方法还是有区别的.解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁.解析器会率先读取函数声明,并…
(function(){ //运行正常 test1(); function test1() { console.log('123'); }; })() (function(){ //出错,test2未定义 test2(); test2 = function () { console.log('123'); }; })() 以下摘录自<Javascript: the good parts> /* function statements are subject to hoisting. This…
前段时间阿里实习生内推,一面就被刷了,也是郁闷.今天系统给发通知,大致意思就是内推环节不足以了解彼此,还可以参加笔试,于是赶紧再投一次.官网流程显示笔试时间3月31日,时间快到了,开始刷题.网上搜了一下去年题目,我擦,第一题就不会(伤心中...),继续往下看,第四题也不会...好嘛,搜答案吧.搜了一个多小时的博客,结合自己的理解,写下了这篇博文... 2014年阿里巴巴前端工程师笔试题目1: var v = "Hello world"; (function() { console.lo…
1.函数的定义和调用 1.1函数的定义方式 方式1 函数声明方式 function 关键字 (命名函数) function fn(){} 方式2 函数表达式(匿名函数) var fn = function(){} 方式3 new Function() var f = new Function('a', 'b', 'console.log(a + b)'); f(1, 2); var fn = new Function('参数1','参数2'..., '函数体') 注意 /*Function 里面…