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")
js学习——函数的更多相关文章
- JS学习 函数的理解
ECMAScript 的函数实际上是功能完整的对象. 函数的理解 用 Function 类直接创建函数,格式如下.可理解为Function构造器. var function_name = new Fu ...
- 学习js回调函数
<!DOCTYPE HTML> <html> <head> <meta charset="GBK" /> <title> ...
- JS学习笔记(三)函数
js中的方法名一般都是首字母小写,其余单词首字母大写的规范. 声明 function 函数名(参数列表) { // 函数体 return 返回值; } 调用 函数名(); (js中花括号喜欢用这种方式 ...
- js学习之函数
1/.js中函数就是对象. 2/以表达式方式定义的函数一般不要函数名以使代码紧凑. 3/js中函数声明的方式会被默认提到外部脚本或最前面,所以在其定义前的代码也可调用. 然而以表达式方式的则不行. 4 ...
- js学习(4) 函数
JavaScript有三种声明函数的方法 (1)function命令 function print(s) { console.log(s); } (2)函数表达式 1.var print = func ...
- js学习之变量、作用域和内存问题
js学习之变量.作用域和内存问题 标签(空格分隔): javascript 变量 1.基本类型和引用类型: 基本类型值:Undefined, Null, Boolean, Number, String ...
- 【Knockout.js 学习体验之旅】(3)模板绑定
本文是[Knockout.js 学习体验之旅]系列文章的第3篇,所有demo均基于目前knockout.js的最新版本(3.4.0).小茄才识有限,文中若有不当之处,还望大家指出. 目录: [Knoc ...
- 【Knockout.js 学习体验之旅】(2)花式捆绑
本文是[Knockout.js 学习体验之旅]系列文章的第2篇,所有demo均基于目前knockout.js的最新版本(3.4.0).小茄才识有限,文中若有不当之处,还望大家指出. 目录: [Knoc ...
- 【Knockout.js 学习体验之旅】(1)ko初体验
前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...
随机推荐
- Jenkins和pipeline
Jenkins https://jenkins.io/index.html The leading open source automation server, Jenkins provides hu ...
- GCC编译器原理(一)03------GCC 工具:gprof、ld、libbfd、libiberty 和libopcodes
1.3.7 gprof:性能分析工具 参考文档:https://www.cnblogs.com/andashu/p/6378000.html gprof是GNU profile工具,可以运行于linu ...
- SqlServer 左右内连接
- NEX 事件
我正在上班突然看到这个事情差点没笑抽. 转自纯洁的微笑:原文在此:http://www.cnblogs.com/ityouknow/p/9247842.html#4010697 大家知道 VIVO 上 ...
- day 5 - 1 字典(dict)
dict dict key 必须是不可变数据类型,可哈希value:任意数据类型 dict 优点:使用二分查询来搜索数据存储了大量的关系型数据特点:无序的 数据类型划分:可变数据类型,不可变数据类型不 ...
- Codeforces Round #545 (Div. 2)(B. Circus)
题目链接:http://codeforces.com/contest/1138/problem/B 题目大意:贼绕口的题目,就是给你两个字符串s1,s2,然后每一个人代表一列,第一列代表技能一每个人是 ...
- python初级实战-----主机在线情况监控web
背景 公司有600多台服务器,打算写一个小程序,能一眼看见哪些服务器不在线. 大体思路是: 1.把所有服务器ip存进数据库,ping命令判断服务器是否在线 2.更新数据库中ip的状态 3.简单的web ...
- RabbitMQ简单应用の主题模式(topic)
Topic exchange(主题转发器) 发送给主题转发器的消息不能是任意设置的选择键,必须是用小数点隔开的一系列的标识符.这些标识符可以是随意,但是通常跟消息的某些特性相关联.一些合法的路由选择键 ...
- centos安装fish shell
对于 CentOS 7,请以根用户 root 运行下面命令: cd /etc/yum.repos.d/ wget https://download.opensuse.org/repositories/ ...
- 为Oracle GoldenGate准备数据库
了解如何为Oracle GoldenGate准备数据库,包括如何配置连接和日志记录,如何在数据库中启用Oracle GoldenGate,如何设置闪回查询以及如何管理服务器资源. 为集成进程配置连接 ...