JavaScript基础pink[3]-函数/作用域/预解析
一、函数
function 函数名(){函数体
}
函数传参
形参:声明函数时写在函数名右边小括号里的叫形参
实参:调用函数时写在函数名右边小括号里的叫实参
1、函数返回值(return
)
注意事项:
1、返回多个值,返回结果是最后一个值
2、如果没有return 返回undefined
2、arguments
存储了传递的所有实参,展示形式是个伪数组
function fn(){console.log(arguments);console.log(arguments.length);console.log(arguments[2]);for (var i = 0;i<arguments.length;i++){console.log(arguments[i]);}}fn(1,2,3)
(1)具有数组的length属性
(2)按照索引的方式存储
(3)没有真正数组的方法 pop() push()等
函数可以调另一个函数
3、函数两种声明方式
(1)函数关键字定义函数
function fn(){}
(2)函数表达式 匿名函数
var fun = function() {};
fun是变量名 不是函数名
定义:将匿名函数赋值给一个变量,并且通过变量名称进行调用 我们将这个成为函数表达式
let fn = function ( ) {// 函数体
}
二、作用域
- 全局作用域
- 局部作用域
- 块级作用域{} if{} for{},现阶段js没有块级作用域,es6新增
特殊情况:局部变量或者块级变量 没有声明直接赋值的当全局变量看
变量访问原则:采取就近原则的方式来查找变量最终的值
三、预解析
- js引擎运行js 分为两步:预解析 代码执行
- 预解析 js引擎会把js 里面所有的var 还有function 提升到当前作用域的最前面
- 代码执行 按照代码书写的顺序从上往下执行
- 变量提升 把所有的变量声明提升到当前作用域最前面,不提升赋值操作
- 函数提升 把所有的函数声明提升到当前作用域最前面 不调用函数
函数表达式 调用必须写在函数表达式下面