语法:
// 语法
function [函数名](形参1,形参2,形参3...){
[函数体代码];
}
// 无参函数
function func1() {
console.log('hello world');
}
func1(); // hello world
// 有参函数
function func2(a, b) {
console.log(a, b);
}
func2(1, 2); // 1 2
func2(1, 2, 3, 4, 5, 6, 7, 8, 9); // 1 2(多了没关系 只要对应的数据)
func2(1); // 1 undefined(少了也没关系, 未定义的会用undefined填补)
function cook(isBad,a,b,c){
// isbad形式参数
if (isBad){
alert('做饭');
}else{
alert('点一个外卖');
}
}
var bad = false; //刀坏了
cook(bad); // 点一个外卖
函数中的arguments参数: 能够获取到函数接受到的所有的参数
function func3(a, b, c) {
console.log(arguments);
}
func3(1, 2, 3);
// 执行结果:
/*
Arguments(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]
0: 1
1: 2
2: 3
*/
// 使用arguments判断传参的确切性
function func4(a, b) {
if (arguments.length < 2) {
console.log('参数传少了!');
} else if (arguments.length > 2) {
console.log('参数传多了!');
} else {
console.log('正常执行');
}
}
func4(1, 2, 3); // 参数传多了!
func4(1); // 参数传少了!
func4(1, 2); // 正常执行
function func5() {
// 返回一个值
return 666
}
console.log(func5()); // 666
function func6(a, b) {
// 返回多个值, 多个值必须被包含不然就会返回逗号前面的那一个值.
return a, b
}
console.log(func6(1, 2)); // 2
function func7(a, b) {
return [a, b]
}
console.log(func7(1, 2)); // [1, 2]
var division = function(a,b){
return a/b;
}
// 调用
division(10,2) // 5
/*function () {
console.log('哈哈哈');
}*/
let res = function() {
// 函数还可以被赋值, 对于匿名函数这也赋值虽然没有什么意义, 但是为了然函数能正常执行, 还是赋值一个变量吧~
console.log('哈哈哈');
};
res(); // 哈哈哈
// 如果箭头函数不需要参数或需要多个参数,就是用圆括号代表参数部分
var f = () => 5;
// 等同于
var f = function(){
return 5};
let func8 = v => v*2; // 箭头左边的是形参 右边的是返回值
console.log(func8(2)); // 4
let func9 = function (v) {
// 上面与下面作用等同
return v * 2;
};
console.log(func9(2)); // 4`
/*
函数定义: 无参, 有参
函数调用: 无参直接调用. 有参调用传值多余部分不要, 少的部分用undefined提补.
arguments: 可以接受所有参数, 可以通过arguments.length获取传入的参数个数.
函数返回值: 单个返回值. 多个返回值需被包含, 如果不包含只返回逗号前面一个值.
匿名函数: 匿名函数可被赋值.
箭头函数:
无参: let a = () => 返回值;
有参: let a = 形参 => 返回值;
*/
局部变量:
全局变量:
变量生存周期:
作用域
跟python查找变量的顺序一致
var city = "BeiJing";
function f() {
var city = "ShangHai";
function inner(){
var city = "ShenZhen";
console.log(city);
}
inner();
}
f(); // 输出结果是? ShenZhen
// ES6推荐使用let
let city = "BeiJing";
function f() {
let city = "ShangHai";
function inner(){
let city = "ShenZhen";
console.log(city);
}
inner();
}
f(); // 输出结果是? ShenZhen
var city = "BeiJing";
function Bar() {
console.log(city);
}
function f() {
var city = "ShangHai";
return Bar;
}
var ret = f();
ret(); // 打印结果是? BeiJing
// ES6推荐使用let
let city = "BeiJing";
function Bar() {
console.log(city);
}
function f() {
let city = "ShangHai";
return Bar;
}
let ret = f();
ret(); // 打印结果是? BeiJing
var city = "BeiJing";
function f(){
var city = "ShangHai";
function inner(){
console.log(city);
}
return inner;
}
var ret = f();
ret(); // ShangHai
// ES6推荐使用let
let city = "BeiJing";
function f(){
let city = "ShangHai";
function inner(){
console.log(city);
}
return inner;
}
let ret = f();
ret(); // ShangHai