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 );

 

posted @ 2021-01-11 01:50  小衣  阅读(215)  评论(0编辑  收藏  举报