概念
封装一段可以完成特定功能的代码块,调用时可以被重复执行
定义函数(2种方法)
声明式定义函数:
function 函数名(){} 函数名:自己定义,命名规则和规范同变量 () :必须带 {}: 代码块
赋值式定义函数
var 函数名= function(){}
调用函数
语法:函数名(); 注意:函数一旦被调用,{}内部的代码会执行
函数的参数
形参:函数定义时()中的参数叫形参 实参:函数调用的时候()的参数叫实参
函数的返回值 return
1、写在函数语句的最下端 2、return和输出值用空格隔开 return的意义: 1、返回函数的预算结果 2、终止函数的执行(如果同时return几个值,遇到第一个return就会结束) 3、任何函数都有return,如果不写,函数内部最底端,默认有一行return undefined。
return的两层含义:
1、 调用函数 2、把输出函数的内容当成一个值,返回一个值 一般情况,没有return,就直接调用。有return,需要输出调用
作用域
一段代码生效的范围
局部作用域
位置
定义在函数内部,拥有局部作用域,变量只能函数内部访问,函数外部访问不到
全局作用域
位置
在script标签范围内,,函数外部的区域,具有全局作用域,拥有全局作用域的变量可以在任何地方访问到 生命周期:打开一个页面就产生了一个全局作用域,页面关闭,全局作用域就销毁 生命周期:局部作用域在函数调用时产生,函数调用结束销毁
变量的访问规则
先访问当前作用域里有没有定义变量,没有的话向上查找
变量的赋值规则
先访问作用域里有没有定义变量,没有定义过的话,就向上查找。
预解析:
提前解释代码 浏览器内核:渲染引擎(解释html和css)和js引擎(解释性语言,从上向下一行一行解释说明) 1、js引擎在执行js代码的时候,把var 和function提升到当前作用域的最顶端 2、 变量提升的只是声明部分 3、函数提升(提升的声明式 ===》 function fn(){}),提升函数整体 4、 函数提升优先于变量提升
两种函数声明方式的区别
声明式函数:在执行javascript文件中的代码之前进行处理,这意味着在定义函数之前就可以使用语句调用该函数 赋值式声明函数:编译器会把变量func提在作用域的最前,在编译到函数表达式之前,func一直是undefined,在编译函数之后func才有具体的定义。 如果将调用写在函数表达式之前,则会报错func is not a function
|