Javascript我学之二函数定义
本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘
函数
几个要点:
定义方式
a)命名函数:
除非在另一个函数内部定义,否则,命名函数是全局的。
// 全局的命名函数
function add(x, y) {
return x + y;
}
console.info(add(, )); //
b)匿名函数:
匿名函数通常赋值给一个变量,再通过变量调用。
var func = function (x, y) {
return x + y;
}
console.info(func(5, 2)); //
匿名函数适用于以下这种 “立即执行的匿名函数” 的情况:
console.info(
function (x, y) {
return x + y;
}(100, 200) //立即调用
);
C)定义方式影响代码执行效果
命名函数可以先使用,再定义
console.info(sum(10, 10));
function sum(num1, num2) {
return num1 + num2;
}
匿名函数必须先定义,再使用
//console.info(sumFunc(10, 10)); //Uncaught TypeError: Property 'sumFunc' of object [object Object] is not a function
var sumFunc = function (num1, num2) {
return num1 + num2;
};
console.info(sumFunc(10, 10));
函数返回值:
用return 生成返回值.如没有return ,则函数返回undefined
function func() {
}
console.info(func()); //undefined
function func2() {
return; //空的返回语句
}
console.info(func2()); //undefined
return里藏着的坑:
var func = function (x, y) {
var sum = x + y;
return {
value : sum
}
}
这么写没有问题: 调用 func(5,5) 返回的是 Object {value: 10}
然而:
var func = function (x, y) {
var sum = x + y;
return
{
value: sum
};
}
console.info(func(5,5)); //undefined
函数即对象:
function add(x, y) {
return x + y;
}
console.info(add(100, 200)); //
var other = add; //other和add引用同一函数对象
console.info(other(300, 400)); //
console.info(typeof other); //function
console.info(add === other); //true
嵌套定义的函数:
function outerFunc(a, b) {
function innerFunc(x) {
return x * x;
}
return Math.sqrt(innerFunc(a) + innerFunc(b));
}
console.info(outerFunc(3, 4)); //
访问外部变量:
1 var globalStr = 'globalStr';
function outerFunc2(argu) {
var localVar = 100;
function innerFunc2() {
localVar++;
console.info(argu + ":" + localVar + ":" + globalStr);
}
innerFunc2(); //hello:101:globalStr
}
outerFunc2("hello");
返回函数的函数:
因为函数是对象,所以可以作为返回值。
function outerFunc(x) {
var y = 100;
return function innerFunc() {
console.info(x + y);
}
}
outerFunc(10)(); //
Javascript我学之二函数定义的更多相关文章
- JavaScript要点 (五) 函数定义
JavaScript 使用关键字 function 定义函数. 函数可以通过声明定义,也可以是一个表达式. 函数声明分号是用来分隔可执行JavaScript语句. 由于函数声明不是一个可执行语句,所以 ...
- JavaScript入门学习之二——函数
在前一章中讲了JavaScript的入门语法,在这一章要看看函数的使用. 函数的定义 JavaScript中的函数和Python中的非常类似,只不过定义的方式有些不同,下面看看是怎么定义的 //定义普 ...
- Kotlin(二) 函数定义
1.不带参数,不返回值的函数 fun sum(){} 2.带参数,不带返回值的函数 fun sum(a:Int){} 3.带参数,带返回值的函数 fun sum(a:Int,b:Int) : Int{ ...
- 深入理解javascript函数定义与函数作用域
最近在学习javascript的函数,函数是javascript的一等对象,想要学好javascript,就必须深刻理解函数.本人把思路整理成文章,一是为了加深自己函数的理解,二是给读者提供学习的途径 ...
- JavaScript权威设计--命名空间,函数,闭包(简要学习笔记十二)
1.作为命名空间的函数 有时候我们需要声明很多变量.这样的变量会污染全局变量并且可能与别人声明的变量产生冲突. 这时.解决办法是将代码放入一个函数中,然后调用这个函数.这样全局变量就变成了 局部变量. ...
- JavaScript函数定义和调用 变量作用域
本文是笔者在看廖雪峰老师JavaScript教程时的个人总结 JavaScript中函数定义可以是这样的格式 function 函数名(参数) { 函数体 } 也可以是这样的格式 ...
- JavaScript函数定义 ,参数调用
一.JavaScript函数函数: 函数就是一种封装,由事件驱动的或者当它被调用时执行的可重复使用的代码块.定义函数:function 函数名(){函数体;}数不会自动执行,需要被调用才可以执行函数名 ...
- Javascript异步编程之二回调函数
上一节讲异步原理的时候基本上把回掉函数也捎带讲了一些,这节主要举几个例子来具体化一下.在开始之前,首先要明白一件事,在javascript里函数可以作为参数进行传递,这里涉及到高阶函数的概念,大家可以 ...
- 【Python基础学习二】定义变量、判断、循环、函数基本语法
先来一个愉快的Hello World吧,就是这么简单,不需要写标点符号,但是需要严格按照缩进关系,Python变量的作用域是靠tab来控制的. print("Hello World" ...
随机推荐
- 上海上传数据重复-sftp端口关闭
关键: (1) sftp的测试指令:sftp -oPort=2125 meituan@220.248.104.170 (2)让上海那边自己试了一下,也不行,他们自己重置了一下sftp的密码,我们可以登 ...
- JQ——利用一个开关,点击一个按钮完成展开收起功能
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- css高級技巧
1.鼠標顯示 a:小手cursor:pointer b:默認cursor:default c:勾選文本cursor:text d:拖動cursor:move 2.css三種佈局模型 a.流動模型(默認 ...
- Python——Pycharm基本设置
一.,模板(加入中文UTF-8) #!/usr/bin/env python # -*- coding:utf-8 -*- 设置方法:file->settings->Editor-> ...
- Elastalert安装及使用
如果在windows 64平台报错:执行 pip install python-magic-bin==0.4.14修复https://stackoverflow.com/questions/18374 ...
- bzoj4671: 异或图——斯特林反演
[BZOJ4671]异或图 - xjr01 - 博客园 考虑先算一些限制少的情况 gi表示把n个点的图,划分成i个连通块的方案数 连通块之间不连通很好处理(怎么处理看下边),但是内部必须连通,就很难办 ...
- <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+re ...
- 金融量化分析【day113】:聚宽自带策略
一.策略代码 # 导入函数库 from jqdata import * # 初始化函数,设定基准等等 def initialize(context): # 设定沪深300作为基准 set_benchm ...
- 盒子显隐,伪类边框,盒子阴影,2d平面形变
-盒子显隐 显隐的盒子尽量不影响其他盒子的布局 display:none; 消失的时候不占位置,显示的时候占位 opacity:0-1; 盒子透明度 overflow: hidden; 超出部分隐藏 ...
- WPF中的常用布局
一 写在开头1.1 写在开头评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好. 1.2 本文内容本文主要内容为WPF中的常用布局,大部分内容转载至https://blog.csdn.net ...