js学习——函数

函数声明

function funName(parameter){}

函数表达式,并把函数存储在变量x中

//不用给函数名,后续并不能直接用给定的函数名调用
var x = function(a){return a};
x;//返回的是一个函数对象
x();//调用函数

用函数构造函数定义一个函数(参数, 表达式)

var myFunc = new Function("a", "b", "return a + b");

函数提升:声明会自动提前,赋值的不提升

myFunc(10);
function myFunc(x){return x;}

函数自动调用自己执行

(function callSelf(){alert("i call myself");})();

函数是对象

function myFunc(){};typeof myFunc;//类型为 function

显式参数:形参(C++)      隐式参数:实参(C++)

参数规则:对隐式参数不进行类型检测,也不进行个数检测

默认参数:如果没有给隐式参数,那么显式参数的值为undefined

function myFunc(x)
{
    x = x||0;//若x是undefined,则将其值设为0
}

arguments对象:function的内置属性

function myFunc()
{
    var n = arguments.length;//参数的个数
    //遍历输出每一个参数
    for(var i = 0; i < n; i++)
    {
         alert(arguments[i]);
    }
}

参数传递:按值传递(C++)

//不是对象的是按值传递
var a = 0;
function ma(a){a = 4;}
ma(a);//结果没有变化
//隐式参数是按值传递
var c = [1,2,3];
function mc(){arguments[0] = 3;}
mc(c);//c的值没有变化

参数传递:按引用传递(C++)

var b = [1,2,3];
//显示参数,且参数是一个对象
function mb(b){b[0]=3;};
mb(b);//b的值发生变化

函数调用,有4种调用方式,区别在于this的初始化

this指向调用函数的对象

//作为一个函数调用
function myFunc()
{
    return this;
}
//返回window对象,因为默认属于window全局对象
myFunc();
//作为对象的方法调用
var myObj={
    myFunc:function(){return this;}
};
myObj.myFunc();//返回myObj对象:Object {myFun: function}
//用构造函数调用函数,构造函数中的this没有任何值
function myFunction(){return this;}
//this指向实例化后的对象:myFunction{}
var myFunc = new myFunction();
//作为函数方法调用函数
function myFunction(a,b,c){return this;}
//第一个参数myObj会成为this
var a = 0, b = 0, c = 0;
myObj = myFunction.call(myObj, a, b, c);//按参数一个个对应给出
var arr = [0, 0, 0];
myObj = myFunction.apply(myObj, arr);//参数组合成一个数组

js闭包(python中也类似)

可访问上一层函数作用域里变量的函数

var add = (function() {
    var counter = 0;
    return function() { return counter += 1; };
})();//自调用函数
add();
add();//计数器会递增
var x = function(){return function(){alert("abc");};};
x; //function(){return function(){alert("abc");};};
x(); //function (){alert("abc");}
x()();//会执行alert("abc")
时间: 2024-10-14 07:07:58

js学习——函数的相关文章

学习js回调函数

<!DOCTYPE HTML> <html> <head> <meta charset="GBK" /> <title>回调函数(callback)</title> <script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.9.0/jquery.min.js"></script&g

【Node.js学习四】 Node.js回调函数

Node.js 回调函数 Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数. 例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回.这样在执行代码时就没有阻塞或等待文件 I/O 操作.这就大大提高了 Node.js 的性能,可以处理大量的并发请求. 下面对阻塞代码和非阻塞代码分别举出一例

node.js学习笔记之调用函数

本文件和从其它模块引入函数: 从其他模块引入分只支持引入一个函数和多个  这两种 例: test.js为主函数 var http=require('http'); http.createServer(function (request,response){ response.writeHead(200,{'Content-Type':'text/html'}) func1(response);//调用内部 otherfun.func3(response);//调用外部函数 console.log

学习笔记 -- js节流函数

/* * 频率控制 返回函数连续调用时,fn 执行频率限定为每多少时间执行一次 * @param fn {function} 需要调用的函数 * @param delay {number} 延迟时间,单位毫秒 * @param immediate {bool} 给 immediate参数传递false 绑定的函数先执行,而不是delay后后执行. * @return {function}实际调用函数 */ commFun.throttle = function (fn,delay, immedi

JS学习笔记(三)函数

js函数的声明方式为 function 函数名(参数列表) { // 函数体 return 返回值; } 调用 函数名(); (js中花括号喜欢用这种方式,因为在以前的浏览器中会在每行js代码的末尾添加分号,但现在的浏览器一般已经兼容这种写法,但仍保留这种习惯.) 需要注意的是只有在js的函数中声明的对象才具有块级作用域.函数中变量一定要定义,否则就是全局变量. 在解释js的时候,会先将其读入内存进行解释,再一步一步的从上到下的执行代码.js的函数也是变量值,即可以把函数赋值给变量. 1 fun

Js学习小结(二)函数

(一)声明函数 直接量(字面量)声明 function f1(){ ... } 表达示声明 var f2 = function(){ ... } 内置构造函数声明(使用此方式情况很少,一般不用,所以就不过多赘述) var f3 = new function(); (二)调用函数 直接量声明函数调用 f1(); function f1(){ console.log(111); } f1(); 结果: 111 111 声明前后都可调用 表达示声明函数调用 f2(); var f2 = functio

Ext JS学习第五天 Ext_window组件(一)

此文来记录学习笔记 •第一个组件:Ext.window.Window.对于组件,也就是Ext最吸引开发者的地方,那么我们要真正的使用Ext的组件,首先必须学会阅读API文档. –xtype:组件的别名 –Hierarchy 层次结构 –Inherited mixins 混入的类 –Requires 该组件需要使用的类 –configs:组件的配置信息 –properties:组件的属性 –methods:组件的方法 –events:组件的事件 •window组件常用属性和方法讲解: •confi

JavaScript模块加载框架sea.js 学习一

简单总结sea.js 学习 文件目录结构 /sea/sea.js      下载地址  http://seajs.org/docs/#downloads /sea/jquery-sea.js   下载地址 http://jquery.com/download/ /sea/sea_config.js /sea/home.jsdata.js /sea/data.js 1.html页面代码文件 <style> .ch{height:200px;width:200px;background:#ccc;

【转】Backbone.js学习笔记(二)细说MVC

文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Backbone源码结构 1: (function() { 2: Backbone.Events // 自定义事件 3: Backbone.Model // 模型构造函数和原型扩展 4: Backbone.Collection // 集合构造函数和原型扩展 5: Backbone.Router // 路由