zoukankan      html  css  js  c++  java
  • JavaScript(七)-函数的拓展

    函数返回值

    return可以改变函数内部的"返回值".
    1.一个函数执行完之后,默认的返回值是undefined,
     
    function x(){
    
          return 111;
        }
    //函数自执行,内部运行return就是函数的返回值
    console.log(  x()  );
    输出到页面中:document.write
     function sum(a,b){
          return a + b;
        }
    //实参传入形参,打印公式返回值
    console.log( sum(4, 5) ** 2 );
    2.函数执行到return,函数就立即结束,不再往后执行.
    3.起作用离他最近的函数,后面代码不执行
       function x( a ){
          if (a<10){
            return a;
          }
    
          return a * 2;
        }
    
        console.log( x(9) );
        console.log( x(20) );
        console.log( x(30) );

    使用有名函数作为页面事件点击返回值时,只需用函数名赋值

    //函数名赋值
    let a = 0;
    function fn(){
          a ++;
          console.log(a);
        }
    
    document.onclick = fn;
    
    //函数名自执行
    let a = 10
    function fn(){
          return function(){
            a ++;
            console.log(a);
          }
        }
    
    document.onclick = fn();

    函数中各种this指向

    //全局作用域中,this指向window
        console.log(this);//window
    
    
        function x(){
          console.log(this);
        }
        //变量函数自执行,this指向window
        x();//window
    
    
        //函数表达式自执行,this指向window
        (function(){
          console.log(this);//window
        })();
    
    
        //事件函数的this指向事件对应的节点对象
        /*document.onclick = function(){
          console.log(this);
        };*/
    
    
    
        let obj = {
          name : "Fly",
          age : 18,
          say : function(){
            console.log(this);
          }
        };
        //对象的方法自执行时,this指向该对象
        obj.say();
    
    
        //但是如果用来充当事件函数,this还是按照事件函数的规则,指向节点对象
        document.onclick = obj.say;

    修改this的指向

        //call , apply 都是自执行
    
        let obj = {
          n : "Fly",
          a : 16
        };
    
        function fn( a,b ){
          console.log(a+b,this);
        }
    
        // fn();//window
        
        //传入的第一个实参,往后依次传入的形参,代表this指向
        fn.call( obj,2,3 );
    
        //传入一个数组里,依次对应形参
        fn.apply( obj,[3,4] );
    
       //bind不会主动执行,被动执行
        let obj = {a:1,b:2};
    
    
        let fn = function(){
          console.log(this);
        };
    
        //bind不会主动执行,被动执行
        document.onclick = fn.bind(obj);

    基础数据类型:栈内存, 复杂数据类型:堆内存

        /*let a = 10;
        let b = 10;
        console.log(a === b); //true
    
        let c = {n:1};
        let d = {n:1};
        console.log(c === d);*///false
    
    
        let e = {h:10};
        let f = e; //引用关系
        // console.log(e === f);//true
    
        f.g = 20;
    
        console.log(e);

    typeof 用来检测 数据的 数据类型

        console.log( typeof 10 ); //"number"
        console.log( typeof "10" ); //"string"
        console.log( typeof true ); //"boolean"
        console.log( typeof undefined ); //"undefined"
        console.log( typeof {} ); //"object"
        console.log( typeof [] ); //"object"
        console.log( typeof window ); //"object"
    
        //比较特殊的
        console.log( typeof null ); //"object"
        console.log( typeof function(){} ); //"function"
    
    
        console.log(typeof typeof 10);//"string"

    alert的各种弹窗

        // alert( 10 );
        // alert( "哈哈哈" );
        // alert( true );
        // alert( undefined )
        // alert( null )
    
        // alert( [1,2,3] ); // 数组的内容1,2,3
        // alert( {a:10} ); // 对象变成字符串[object Object]
    
        //函数弹窗,写的什么样就是什么样
        function fn(){
          let a = 10;
          let b = 20;
          return a+b;
        }
        alert( fn );
  • 相关阅读:
    Linux用户管理
    chattr&lsattr
    repo 回退当前分支下所有仓库到指定日期前的最新代码版本
    grep
    awk
    vscode sftp插件的使用
    程序的链接
    ZJOI2015 诸神眷顾的幻想乡
    BZOJ3756 Pty的字符串
    HDU1506 Largest Rectangle in a Histogram
  • 原文地址:https://www.cnblogs.com/yhy-blog/p/14260375.html
Copyright © 2011-2022 走看看