不定时分享前端学习的点滴,加油!!!
js函数:
、
一.变量的作用域
全局作用域:函数以外就是全局作用域
函数作用域:函数以内就是函数作用域
全局变量:全局作用域下声明的变量,可以在任意作用域下访问
局部变量:函数作用域下声明的变量,只能在所在的函数作用域下访问
函数内不加var声明的变量是全局变量 程序执行前,会将var声明的变量提升到所在作用域的最前边,只是提升声明部分,赋值不提升。 |
二.函数的作用域
全局函数:在全局作用域下创建的函数,可以在任意作用域下调用
局部函数:在函数作用域下创建的函数,只能在所在的函数作用域下调用
作用域链:作用域之间相互嵌套,查找变量的时候,先到当前作用域下查找,如果没有会一直往上一级作用域查找
函数提升:程序执行前,会自动将函数整体提升到所在作用域的最前边,可以先写调用再写创建。
三.递归
在函数中调用自身这个函数,本是一种死循环,会造成内存泄漏
使用递归:
要有边界条件
找规律
使用return结束
斐波那契数列(第1项,2项是1),从第3项开始,每项的值是前两项相加的和。使用递归计算任意一项的值是多少
1 1 2 3 5 8 13 21 34
四.匿名函数
function(){ }
没有名称函数
1.创建函数
函数声明 function fn(){ } |
函数表达式 var fun=function(){ } |
(1)函数名称()和函数名称的区别
函数名称() 调用函数,执行函数体中的代码
函数名称 本质是就是一个变量,保存了函数
(2)函数声明和函数表达式创建函数的区别
函数声明存在函数整体提升,可以先写创建再写调用
函数表达式只是存在声明提升,必须先写创建再写调用
练习:使用匿名函数创建函数getSum,传递任意两个数字,返回两者之间所有整数的和。
c(); var c=2; function c(){ console.log(5); } c(); |
2.匿名函数自调用
为了创建函数作用域,防止全局污染
;(function(){ //函数作用域,变量都是局部变量 })(); |
3.回调函数
将函数作为参数传递
function tao(madai){ madai() //通过参数名称,调用传递的回调函数 } function xin(){ } tao( xin ) tao( function(){} ) |
五.系统函数
Number()/parseInt()/parseFloat()...
isNaN() 检测字符串中是否含有非数字,含有->true,不含有->false
会自动调用函数Number()转为数值,然后查看是否为NaN
eval() 执行字符串表达式
自定义对象
数组对象
字符串对象
Date对象
Math对象