JavaScript(七)-函数的拓展

  • A+
所属分类:Web前端
摘要

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


函数返回值

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