函数声明

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学习——函数的更多相关文章

  1. JS学习 函数的理解

    ECMAScript 的函数实际上是功能完整的对象. 函数的理解 用 Function 类直接创建函数,格式如下.可理解为Function构造器. var function_name = new Fu ...

  2. 学习js回调函数

    <!DOCTYPE HTML> <html> <head> <meta charset="GBK" /> <title> ...

  3. JS学习笔记(三)函数

    js中的方法名一般都是首字母小写,其余单词首字母大写的规范. 声明 function 函数名(参数列表) { // 函数体 return 返回值; } 调用 函数名(); (js中花括号喜欢用这种方式 ...

  4. js学习之函数

    1/.js中函数就是对象. 2/以表达式方式定义的函数一般不要函数名以使代码紧凑. 3/js中函数声明的方式会被默认提到外部脚本或最前面,所以在其定义前的代码也可调用. 然而以表达式方式的则不行. 4 ...

  5. js学习(4) 函数

    JavaScript有三种声明函数的方法 (1)function命令 function print(s) { console.log(s); } (2)函数表达式 1.var print = func ...

  6. js学习之变量、作用域和内存问题

    js学习之变量.作用域和内存问题 标签(空格分隔): javascript 变量 1.基本类型和引用类型: 基本类型值:Undefined, Null, Boolean, Number, String ...

  7. 【Knockout.js 学习体验之旅】(3)模板绑定

    本文是[Knockout.js 学习体验之旅]系列文章的第3篇,所有demo均基于目前knockout.js的最新版本(3.4.0).小茄才识有限,文中若有不当之处,还望大家指出. 目录: [Knoc ...

  8. 【Knockout.js 学习体验之旅】(2)花式捆绑

    本文是[Knockout.js 学习体验之旅]系列文章的第2篇,所有demo均基于目前knockout.js的最新版本(3.4.0).小茄才识有限,文中若有不当之处,还望大家指出. 目录: [Knoc ...

  9. 【Knockout.js 学习体验之旅】(1)ko初体验

    前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...

随机推荐

  1. Slash and BackSlash 记忆法

    容易混淆的两兄弟 Slash https://en.wikipedia.org/wiki/Slash Slash (punctuation), the "/" punctuatio ...

  2. spring boot2 整合(一)Mybatis (特别完整!)

    大概介绍下流程: 借助idea实现mybatis逆向工程 用xml配置实现整合 用cmd命令行实现mybatis逆向工程 用mapping.xml配置实现数据交互 用注解的方式实现数据交互 首先我的开 ...

  3. 第25月第7天 聚宽 svm

    1. # 克隆自聚宽文章:https://www.joinquant.com/post/2709 # 标题:基于SVM的机器学习策略 # 作者:走得很慢的海龟 import math import n ...

  4. Scala思维导图

  5. Vue.js 技术揭秘(学习) slot

    slot特性分发父组件的内容 作用域插槽:通过子组件的一些数据来决定父组件实现插槽

  6. day 10 - 1 函数进阶

    函数进阶 命名空间和作用域 命名空间 命名空间 有三种内置命名空间 —— python解释器 就是python解释器一启动就可以使用的名字存储在内置命名空间中 内置的名字在启动解释器的时候被加载进内存 ...

  7. Java开发环境配置(2)--jdk配置和 多个JDK问题处理

    ==2018-8-15 16:41:06 更新 服务器 jdk1.6升级为1.8,没有卸载原来的1.6,直接安装1.8. 更改环境变量的 JAVA_HOME所指路径后, cmd 输入 java -ve ...

  8. linux系统 之 curl命令

    1,curl命令 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工 ...

  9. requirements.txt文件教程

    方法有2种,命令都是一样,只是执行地方不一样 此方法主要用于迁移新环境使用,为防止代码出现问题,最好使用原装库,所以就有了迁移代码和库的操作 第一种:在pycharm中,左下角有个双重正方形,点击里面 ...

  10. python小练习,利用dict,做一个简单的登录。

    '''利用字典实现登录'''users=[{'username':'jerry','pwd':'123456'},{'username':'tom','pwd':'1'}] def login(use ...