2.根据有无参数分类:
 1.传参函数 f(x)=x+1
 // 参数: 调用方法(函数)时,根据传入的参数的不同,而返回不同的结果
 x: 形参 形式上的参数
 function func3(x){
 console.log(x);
 }
 (x 不限数量)
 //调用
 func3(1); // 1 实参 有实际意义的参数
 func3(2); // 2 实参
//拼接字符串
 function newStr(str1.str2){
 console.log(str1+str2)
 }
 newStr(“hello”,“world”); // helloworld
 newStr(“hello”,“guys”); // helloguys
2.无参函数
 function func(){
 console.log(“无参函数”);
 }
 var func2 = function(){
 console.log(“无参函数2”);
 }
 如果实参数大于新参数,多余的实参不会赋值;如果实参数小于形参数,形参对应的实参将会赋值undefined
3.带有返回值的函数return语句
 return语句:返回 方法/函数的执行的结果
function func(){
 console.log(“带有返回值的函数”);
 return 1
 }
 // 调用
 func();
 console.log(func()); // 1 打印方法执行后的结果
 注意 return 之后的代码不执行 函数停止执行
应用: return; 空 退出函数
 例;
 function func(x,y){
 if(x>y){
 console.log(x+y);
 }else{
 return;
 }
 }
 func(x,y)
// 工作中 经常需要对方法或函数执行的结果进行处理时,就需要使用return语句将结果返回(抛出)
JS(变量)的作用域
作用域时可访问变量的集合
 在js总对象和函数也是变量
 作用域为 可访问的变量,对象和函数的集合
分类:
 1.全局作用域:全局变量
 1.在函数外定义的变量为全局变量
 全局变量有全局作用域:网页中所有的脚本和函数都可以使用
 写法:
 var num=10;
 console.log(num);
 // 函数
 function func(x){
 console.log(x)
 }
 func(num); x
1.2.变量没有声明,直接赋值为全局变量
 未声明的js变量直接赋值会自动作为window的属性,window是js中顶级变量(对象)
 // window.alert()
 // alert();
2.局部作用域:局部变量 只能在函数内部使用
 -变量在函数中声明,变量为局部作用域
 -局部变量:只能在函数内部访问
变量生命周期
- JS的变量生命周期z在它被声明时初始化
 - 局部变量在函数执行完毕后销毁
 - 全局变量在页面关闭后销毁
 
js的闭包函数
-闭包就是能够读取其它函数内部变量的函数。例如在js中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解为**“定义在一个函数内部的函数==”**==在本质上,闭包是将函数内部和函数外部链接起来的桥梁
 -链式作用域:子对象可以一级一级的向上寻找父对象的变量,所以父对象中的所有变量对子对象都是可见的,反之不成立
闭包函数的应用
1.可以读取函数内部的变量
 2.可以让一个变量的值始终保存在内存中
注意事项(了解):
 1)由于闭包会使得函数中的变量都被保存在内存中,内存小号很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法:在退出函数前,将不使用的局部变量全部删除
 2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果将父函数当做对象(object)使用,把闭包当做它的公用方法(Public Method),把内部变量当做它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值
自执行函数
function func(params){
}
 func()
js的函数封装
是函数的一种功能,编写一个或多个功能,通过函数的方式封装起来,对位就可以只提供简单的函数接口(使用方法)
//字面量 不可被改变 重复使用的字面量
 使用变量将字面量储存起来,直接使用变量
//功能函数 方法
 将功能封装为函数,对外提供函数的借口(使用方法)
// 实现10以内的+ -* /
 function add(a,b){
 return a+b
 }
 // 告诉使用者 add 是一个用来做加法的方法 add(数字1,数字2)
 function sub(){
 return a-b
 }
 function times(){
 return a*b
 }
 function devided(){
 return a/b
 }
 var res=add(10,20);
 console.log(res);
// 封装:相同的地方不变 不同的地方通过参数来表示
-eval(): 计算JS字符串










