带有返回值的函数
1、没有返回值的函数
function func(){
console.log(“没有返回值的函数”)
}
func();
console.log(func());
2、带有返回值的函数
return 语句 返回值(结果)
function func2(){
console.log("带有返回值的函数");
var x =10;
return x;
}
func2();
console.log(func2());
注意事项:return之后的代码不执行 函数停止执行
function func3(params){
return "func3";
console.log("func3")
}
应用:return;空/退出函数
function func5(x,y){
if(x>y){
console.log(x+y)
}else{
return;
}
}
工作中,经常需要对方法或函数执行的结果进行处理时,就需要使用return语句将结果返回(抛出)
function func7(a,b){
return a+b
}
var res2=func7(10,20);
console.log(res2);
作用域
作用域为可访问的变量、对象和函数的集合
1、全局作用域:全局变量
1、在函数外定义的变量为全局变量
全局变量有全局作用域:网页中所有的脚本和函数都可以使用
var num=10;
console.log(num);
<!--函数-->
function func(x) {
console.log(x)
}
func(num);
2、变量没有声明,直接赋值为全局变量
未声明的js变量直接赋值会自动作为window的属性 window是js中顶级变量(对象)
window.alert()
alert();
function func2() {
num2=20;
console.log(num2);
}
func2();
console.log(num2);
2、局部作用域:局部变量
变量在函数中声明,变量为局部作用域
局部变量:只能在函数内部访问
function funcx() {
var x=10000;
console.log(x);
}
funcx();
console.log(x);// x is not defined
function funcy() {
var y=10000;
return y;
}
<!--值为10000-->
console.log(funcy());
闭包函数
function func1() {
var x=10000;
return function() {
return x;
}
}
var res=func1();
console.log(res());
console.log(func1()())
通过window实现闭包函数
function func1() {
var x=10000;
function func2() {
return x;
}
return func2;
window.func3=func2;
}
func1();
console.log(func3());
闭包函数的应用
1、可以读取函数内部的变量
function func() {
var a = 100;
return (function () {
return a
})()
}
var b=func();
<!-- 100-->
console.log(b);
2、可以让一个变量的值始终保存在内存中
function func2() {
var c=99;
fAdd=function(){
c+=1;// c=c+1
}
return function(){
return c;
}
}
var res=func2();
<!--//99-->
console.log(res());
<!--// c+1-->
fAdd();
<!--//100-->
console.log(res());
fAdd();
<!--//101-->
console.log(res());
自执行函数
function func(params) {
}
func()
<!--匿名函数-->
(function() {
console.log("自执行函数1")
})()
(function() {
console.log("自执行函数2")
}())
函数的封装
是一种函数的功能,编写一个或多个功能,通过函数的方式封装起来,对位就可以只提供简单的函数接口(使用方法)。
字面量 不可被改变 重复使用字面量
使用变量将字面量储存起来,直接使用变量
功能函数 方法
将功能封装为函数,对外提供函数的接口(使用方法)
function add(a,b) {
return a+b
}
封装:相同的地方不变 不同的地方通过参数来表示
function func(a, b, type) {
return eval(a + type + b)
}
console.log(func(10, 20, "+"))
console.log(func(10, 20, "-"))
console.log(func(10, 20, "*"))
console.log(func(10, 20, "/"))