• js中的函数易忽略的点小节


    1.Function()属性和方法

    属性:

    prototype

    2.Function对象实例属性和方法

    实例属性:(例如var Function=function(x,y,z){}; myFunction.length;)

    • arguments
    • constructor
    • length

    实例方法(例如var myFunction=function(x,y,z){}; myFunction.toString();)

    • apply()
    • call()
    • toString()

    3.函数总有返回值

    例如:

    1 var sayHi=function(){
    2    return "hi";
    3 };
    4 
    5 console.log(sayHi());//返回值为hi

     如果没有指定返回值,则会返回undefined。下面调用yelp函数,将字符串yelp返回控制台,且不会显式返回值。

    1 var yelp=function(){
    2    console.log("yeklp");
    3 }
    4 console.log(yelp()===undefined);//true

     虽然没有显示的return返回值,但还是有返回值存在的,如果不指定要返回的值,则返回是undefined

    4.函数为什么被称为是“一等公民”

    • 函数是对象,可以存储在一个变量、数组或对象中
    • 函数可以传递给函数,并由函数返回。函数拥有属性,因为他是一个对象

    5.arguments对象的length属性:调用时发送给函数的参数数量,例如:

    1 var myFunction=function(z,s,d){
    2     return arguments.length;
    3 };
    4 console.log(myFunction());//0

    Function()实例的length属性:函数所需要的参数总数量,例如:

    1 var myFunction=function(z,s,d){
    2     return myFunction.length;
    3 }
    4 console.log(myFunction());//3

    6.定义函数的四种方式:

    //函数的构造函数:

    var addConstructor=new Function('x','y','return x+y');

    //函数声明

    function foo(x,y){

       return x+y;

    }

    //函数表达式

    var foo=function(x,y){

       return x+y;

    }

    //函数声明表达式

    var foo=function add(x,y){

       return x+y;

    };

    7.调用函数的方式:

    //函数模式

    1 var foo=function(){
    2  return "foo";
    3 }
    4 console.log(foo());

    //方法模式

    1 var myObject={
    2     myFunction:function(){
    3              return "bar";
    4 }
    5 }
    6 console.log(myObject.myFunction());

    //构造函数模式

    1 var Cody=function(){
    2      this.living=true;
    3      this.foo=function(){
    4           return this.living;
    5 };
    6 }
    7 var cody=new Cody();
    8 console.log(cody);

    //apply和call模式

     1 var great={
     2      runGreet:function(){
     3          console.log(this.name,arguments[0],arguments[1]);
     4 }
     5 }
     6 
     7 var cody={name:'cody'};
     8 var lisa={name:'lisa'};
     9 
    10 greet.runGreet.call(cody,'foo','bar');// cody foo bar
    11 greet.runGreet.apply(lisa,['foo','bar']);//lisa foo bar

    8.自定义的匿名函数语句

     1 (function(msg){
     2    console.log(msg);
     3 })("Hi");
     4 
     5 
     6 (function(msg){
     7     console.log(msg);
     8 }("Hi"));
     9 
    10 
    11 !function(msg){
    12     console.log(msg);
    13 }("Hi");
    14 
    15 
    16 //以下代码不行
    17 function sayHi(){
    18     console.log("hi");
    19 }();
  • 相关阅读:
    c.vim
    Ubuntu18.04重装指南
    [TJOI2017]城市 【树的直径+暴力+优化】
    [Bzoj3696]化合物【暴力+树形Dp】
    [JLOI2015]战争调度【暴力+树形Dp】
    [Bzoj3743][Coci2015] Kamp【换根Dp】
    [POI2017]Sabota【观察+树形Dp】
    [CQOI2009]叶子的染色【性质+树形Dp】
    COCI2014/2015 Contest#1 D MAFIJA【基环树最大独立点集】
    [牛客网] 推箱子【离散,线段树区间覆盖】
  • 原文地址:https://www.cnblogs.com/yangxiaoguai132/p/5335937.html
Copyright © 2020-2023  润新知