美文网首页
JS函数专题

JS函数专题

作者: 12end | 来源:发表于2018-12-14 06:46 被阅读0次

函数编写

JS的函数可以嵌套(骚不骚?但是好像其他语言也支持?)

<scirpt>
function Function_name()
{
    function second()
    {
    }
}
</script>

变量提升
JavaScript的函数定义时,它会先把函数体扫一遍,然后把所有的变量声明提升到函数顶部(这才是最骚的叭~)

arguments参数
只在函数内部起作用,永远指向函数调用者传入的所有参数,类似Array但不是Array
利用 arguments 获得所有参数(求和)

function sum(a,b)
{
     if(arguments.length===0)
         return 0;
     var s=0;
     for(var i=0;i<arguments.length;++i)
          s+=arguments[i];
     return s;
}
sum();
sum(1);
sum(1,2);
sum(1,2,3,4,5);

rest参数
要想获得函数参数列表外的剩余参数,使用rest更为方便,当参数数量不够填满参数列表时,rest是一个空数组,而在参数将参数列表填满后,会被包括在rest数组中。

方法

在一个对象中绑定函数,称为这个对象的方法
在一个方法中,this这个特殊变量始终指向当前对象
通过 apply() 可以控制this的指向

function getAge() {
    var y = new Date().getFullYear();
    return y - this.birth;
}
var xiaoming = {
    name: '小明',
    birth: 1990,
    age: getAge
};
xiaoming.age(); // 25
getAge.apply(xiaoming, []); // 25, this指向xiaoming, 参数为空

改变this的另一个方法是 call()

Math.max.apply(null,[1,2,3]);
Math.max.call(null,1,2,3);

(对于普通函数调用,通常把 this 绑定为 null
装饰器
利用 apply() ,动态改变函数行为。
统计使用了多少次 parseInt() 函数

var count =0;
var oldparseInt=parseInt;
window.parseInt = function()
{
    ++count;
    return oldparseInt.apply(null,arguments);//调用原函数
}

高阶函数

第一次见,觉得贼牛逼。。
就是说,函数的参数可以接收另外一个函数作为参数,这样的函数称之为 高阶函数

//一个简单的高阶函数
function add(x,y,f)
{
    return f(x)+f(y);
}
add(1,-3,Math.abs);

map/reduce

map
map() 定义在JavaScript的 Array 中,调用 Arraymap() 方法,传入自定义函数,得到一个新的 Array

function pow(x)
{
    return x*x;
}

var arr=[1,2,3,4,5];
var ans=arr.map(pow);
//[1,4,9,16,25]

map() 在处理数组时及其方便
reduce
同样的,reduce() 定义也在 Array 中,它接收一个函数作为参数,作用效果是顺序地将运算结果与数组中下一个元素做运算。

利用reduce()求积

function product(arr)
{
    return arr.reduce(
        function(x,y)
            {return x*y}
    );
}

通过map,reduce实现 String2int()

function String2int(s)
{
   return s.split("").map(x=>x*1).reduce((x,y)=>x*10+y);
}

实现首字母大写

function(arr)
{
    return arr.map(v=>v.substring(0,1).toUpperCase()+v.substring(1,v.lengtn).toLowerCase());
}

filter

filter() 用于过滤 Array 中的元素,返回剩下的元素,接受一个函数作为参数。

//删掉偶数
var arr = [1,2,3,4,5];
var A=arr.filter(function(x){return x%2!==0;})
//[1,3,5]
//删掉空字符
var arr = ['a','b',' '];
var A=arr.filter(function(x){return x&&x.trim();})

filter() 接收的回调函数,可以有多个参数,第一个参数表示元素,第二个表示元素位置,第三个表示数组本身

//利用filter()巧妙去重
var arr,A;
A = filter(function(element,index,self)
{
    return self.indexOf(element)===index;
}
)

sort

排序算法
很傻逼的排序

['A','C','B'].sort();             ['A','B','C']
['a','C','B'].sort();             ['B','C','a']
[1,2,10,20].sort();               [1,10,2,20]

结果这么奇怪的原因是,Javascript的sort()对数字数组进行排序时,会先将其转换为String再排序

相关文章

  • 【基础系列】JS使用技巧专题

    JS使用技巧专题 1开发技巧 1.1函数使用 1.1.1函数声明方式 JS函数的写法总结 http://blog....

  • JS专题: 函数

    函数声明 匿名函数 具名函数 箭头函数 词法作用域 我们有如下代码 对于上面的代码, 浏览器先把代码变成抽象语法树...

  • JS函数专题

    函数编写 JS的函数可以嵌套(骚不骚?但是好像其他语言也支持?) 变量提升JavaScript的函数定义时,它会先...

  • JavaScript 05 函数

    js函数的概念和作用,js函数的定义,js函数的调用,js事件驱动的概念,js函数的实参和形参,js的作用域,js...

  • js 深入

    * js语法* js的动态函数和匿名函数* js动态函数Functionnew Function();* 匿名函数...

  • JS专题系列之惰性函数与记忆函数

    一、惰性函数 惰性函数:顾名思义就是懒惰的函数,举一个简单的例子,如果我们需要判断当前浏览器是哪一种浏览器,我们需...

  • 2018-12-01

    js中括号操作属性 js函数 js换肤 变量和函数预解析 匿名函数 函数传参 函数return关键字 流程控制语句...

  • jQuery入口函数的作用以及jQuery入口函数和js入口函数

    jQuery的入口函数 js和JQuery入口函数的区别 JS入口函数和JQuery入口函数

  • 微信小程序本地和云函数方式获取云存储数据

    本地方式 js代码 云函数方式 js代码 云函数代码

  • JS操作属性、函数

    JS操作style属性 JS操作class属性 函数 匿名函数 函数传参 作业 if练习 switch练习

网友评论

      本文标题:JS函数专题

      本文链接:https://www.haomeiwen.com/subject/lgbihqtx.html