美文网首页
学习笔记5-函数

学习笔记5-函数

作者: kjiwu | 来源:发表于2020-02-13 19:51 被阅读0次

    函数

    JavaScript的核心,JavaScript的核心,JavaScript的核心,重要的事情说三遍

    函数定义

    function 函数名字(参数1, 参数2, ...) {
        函数体,执行的语句
        return 返回值 //return语句可以不写,不写默认返回undefined
    }
    

    函数参数

    • 函数参数只在函数范围内有效;
        let number = 3;
        function addOne(number) {
            number++;
            console.log(number);
        }
        addOne(number); // 4
        console.log(number); //3
    
    • 函数参数为对象类型时,要注意,函数内的修改会对外部有影响的;
        let obj = { age: 10 };
        function changeAge(a) {
            a.age++;
            console.log(a.age);
        }
    
        changeAge(obj); // 11
        console.log(obj.age); //11
    

    JavaScript中基本类型传递到函数里时,是对原始值的复制,如果是对象传递的是函数的引用

    • JavaScript没有函数重载问题,你传递参数多了少了,调用的都是同一个函数;

    参数解构

    这个和之前说的对象的解构是一样的,你传给函数的参数,也会按照之前讲的解构来解析参数;

        function sayHello({name, message}) {
            return `${name}, ${message}`;
        }
    
        sayHello({name: 'a', message: 'hello.'}); // a, hello.
    

    参数中可以使用展开操作符,但是必须是最后一个参数

        function addNames(name1, ...names) {
            let arr = [];
            arr.push(name1);
            for (let i in names) {
                arr.push(names[i]);
            }
            console.log(arr);
        }
    
        addNames('a', 'b', 'c'); // a,b,c
    

    默认参数

    函数的参数可以给一个默认的值,如果不赋值,则默认为undefined

    this关键字

    this是函数体内的只读字段;this具体指的是什么,由方法如何被调用决定。

    箭头函数

    • 可以省略function;
    • 只有一个参数时,可以省略括号;
    • 如果只有一个表达式时,可以省略大括号;
        const f1 = function() { console.log('f1'); }
        const f2 = () => console.log('f2');
        const f3 = function(name) { console.log(`hello, ${name}`) }
        const f4 = name => console.log(`hello, ${name}`);
    

    函数指定this

    • call, apply, 他俩最大区别是参数
        const bruce = { name: 'Bruce' };
        const madeline = { name: 'Madeline' };
    
        function greet() {
            return `Hello, I'm ${this.name}!`;
        }
    
        greet();
        greet().call(bruce);
        greet().call(madeline);
    
    • bind,永久绑定this,再调用call绑定别的对象,是不会变的;
        function sayHello() {
            console.log(`Hello, ${this.name}!`);
        }
    
        const mike = { name: 'Mike' };
        const jake = { name: 'Jake' };
    
        const bindMike = sayHello.bind(mike);
        bindMike(); //Hello, Mike
        bindMike.call(jake); //Hello, Mike
    

    相关文章

      网友评论

          本文标题:学习笔记5-函数

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