定义函数有两种方式:函数声明和函数表达式。它们之间一个重要的区别是函数提升。
1.函数声明会进行函数提升,所以函数调用在函数声明之前也不会报错:
```
test();
function test(){
alert(1);
}
```
2.函数表达式不会进行函数提升,函数调用在函数声明之前的话会报错:
```
test(); // test is not a function
var test=function(){
alert(1);
}
```
递归函数是通过在函数内部调用自身实现的。
直接使用函数名进行递归调用
```
function f(num){
if(num==1){
r
继续阅读 »
Immediately-invoked Function Expression(IIFE,立即调用函数),简单的理解就是定义完成函数之后立即执行。因此有时候也会被称为“自执行的匿名函数”(self-executing anonymous function)。
IIFE的叫法最早见于Ben Alman的文章。文章中Ben Alman 已经解释得很清楚了,希望定义自执行函数式常见的语法错误有两种:
1) function (){ }()
期望是立即调用一个匿名函数表达式,结果是进行了函数声明,函数声明必须要有标识符做为函数名称。
2) function g(){ }()
期望是立即调用一个具名函数表达式,结果是声明了函数 g。
继续阅读 »
高阶函数是至少满足下列条件之一的函数
* 函数可以作为参数被传递
* 函数可以作为返回值输出
(js这么好的语言中的函数当然满足 ^^)_
函数作为参数传递
把函数当作参数传递,可以抽离出一部分容易变化的业务逻辑,把这部分业务逻辑放在函数中,可以分离业务代码中变与不变的部分。
回调函数,ajax异步,callback
var getUserInfo() = function(userId, callback) {
$.ajax('http://xxx.com/getUserInfo?' + userId, function(data) {
if (typeof(callback === '
继续阅读 »
先摆干货,总结:static函数的作用是在链接层面上的。
之所以研究static函数是因为Wine里面很多helper函数都是在.h文件里声明为static, 其作用就是避免命名冲突。
1.
正如很多C语言书籍里都有提到:
函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。
定义静态函数的好处:
<1> 其他文件中可以定义相同名字的函数,不会发生冲突
<2> 静态函数不能被其他文件所用。
继续阅读 »
小函数蕴含着大学问:函数节流之水龙头与弹簧、尾递归优化、展开参数函数、异步化函数等,整理了几个有趣的js函数,后续还会增加。
函数节流:水龙头与弹簧
什么是节流,请自行百谷
Throttle:这种方式是类似水龙头,当水滴足够大时水滴就会掉下来;类似的,当时间超过某个timeout的时候就执行函数
```js
var throttle = function(fn, timeout) {
var last = new Date().getTimes();
return function() {
var curr = new Date().getTimes();
if (curr - last >=
继续阅读 »
本文译自 Dmitry A. Soshnikov 的文章 ECMA-262-3 in detail. Chapter 5. Functions.
其中大部分参考了 goddyzhao 的翻译。
概述
本文将介绍 ECMAScript 中一个非常常见的对象 -- 函数。我们将着重介绍函数都有哪些类型,不同类型的函数是如何影响上下文的变量对象的,以及每种类型的函数的作用域链中都包含什么,并回答诸如下面这样的问题:下面声明的函数有什么区别吗?(如果有,区别是什么)。
js
var foo = function () {
...
};
上述方式创建的函数和如下方式创建的有什么不同?
js
function foo() {
继续阅读 »
函数对象
JavaScript中函数就是对象. 函数对象连接到Function.prototype.
当把一个函数当作构造函数(使用new关键字)使用时, 新创建的对象的原型就是该函数的prototype对象. 我们可以通过给prototype设置属性而达到让该类对象拥有同样的公共属性的目的.
继续阅读 »
参考原文:7 Essential JavaScript Functions 以下是意译。
早期,由于浏览器厂商对 JavaScript 实现不同,我们通常需要一些简单的函数来实现某些边缘特性,甚至某些基本特性,比如 addEventListener 和 attachEvent。现在,虽然时代进步了,但仍有一些函数需要开发者掌握,以便于性能优化和快速开发。
more
去抖 Debounce
去抖(debounce)函数可以提高某些事件绑定的性能,如果你没有为 scroll、resize 和 key* 事件使用去抖函数,你的代码很可能是性能低下的,下面是一个 debounce 函数的实现:
```javascript
// 返回
继续阅读 »
content
{:toc}
本文为慕课网 JavaScript深入浅出 JavaScript 函数笔记。
概念
函数是一块JavaScript代码,被定义一次,但可执行和调用多次。
继续阅读 »
有时候可能用到某个库的某些函数接口,但是这个库有可能在某个平台上被裁减过了,接口支持不全,如果你想跨平台使用,就会出问题
因此在使用之前进行检测是否存在这个函数,还是很有必要的,xmake提供了方便的api,可以批量检测某个库的一些函数:
例如:
```lua
target("test")
-- 检测libc库中,对宽字符操作的接口是否存在,检测条件:检查wchar.h、stdlib.h中是否有函数声明
add_cfuncs("libc", nil, {"wchar.h", "stdlib.h"}, "wcscat",
继续阅读 »