zoukankan      html  css  js  c++  java
  • Javascript我学之三函数的参数

     本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘

    函数的参数         

                对于参数值,JavaScript不会进行类型检查,任何类型的值都可以被传递给参数。
                对于函数参数,如果过少,没得到值的参数值为undefined,如果过多,多的会被忽略掉。
     1         //调用函数时传入的实际参数
     2         function add(num1, num2) {
     3             return num1 + num2;
     4         }
     5         //一切正常的调用方式
     6         console.info(add(1, 2));  //3
     7         //不检查参数的类型,字串和数字可以混用
     8         console.info(add("1", 2)); //12
     9         //多余参数被忽略
    10         console.info(add(1, 2, 3));  //3
    11         //少的参数被视为undefined
    12         //1+undefined=NaN
    13         console.info(add(1));  //NaN

    检测参数是否缺失

    判断是否为 undefined

    1         //检测参数是否缺失
    2         function sayHello(name, message) {
    3             if (typeof message === 'undefined') {
    4                 message = '你好!';
    5             }
    6             console.info(name + "," + message);
    7         }
    8         sayHello("贾君鹏", "你妈喊你吃饭"); 
    9         sayHello("贾君鹏");       //贾君鹏,你好!

    保存参数的arguments对象

     利用arguments对象,写出支持任意个参数的函数。arguments像是一个数组,但实际上不是数组,所以很多数组方法是不能用的。
     1         //保存参数的arguments对象
     2         function sumNumbers() {
     3             var result = 0;
     4             for (var i = 0; i < arguments.length; i++) {
     5                 result += arguments[i];
     6             }
     7             return result;
     8         }
     9       console.info(sumNumbers(1, 2));  //3
    10       console.info(sumNumbers(1, 2, 3));  //6
                    

    函数对象的length属性  

                   arguments.length       函数接收的实参个数
                    函数名.length             函数定义的形参
     1         //函数对象的length属性
     2         function sayName(name){
     3             console.info(name);
     4         }
     5         function sum(num1, num2){
     6             return num1 + num2;
     7         }
     8         function sayHi(){
     9             console.info("hi");
    10         }
    11         console.info(sayName.length); //1
    12         console.info(sum.length); //2
    13         console.info(sayHi.length); //0 
     

    作为参数的函数对象

    函数是一个对象,可以作为另一个函数的参数
    1         //作为参数的函数对象
    2         function callSomeFunction(func, argu) {
    3             return func(argu);
    4         }
    5         function getGreeting(name) {
    6             return "Hello, " + name;
    7         }
    8         var result = callSomeFunction(getGreeting, "jxl");
    9         console.info(result);  //Hello,jxl

    使用命名/匿名函数作为函数参数

    1         var callTwice = function (otherFunc) {
    2             otherFunc();
    3             otherFunc();
    4         };
    5         callTwice(function () {
    6             console.info("this is a function");
    7         });

    函数作为参数实例:

    1     <script>
    2         var button = document.getElementById('btnClick');
    3         var result = document.getElementById('result');
    4         var clickCount = 0;
    5         button.addEventListener('click', function () {
    6             clickCount++;
    7             result.setAttribute('value', clickCount+': Hello,world!');
    8         })
    9     </script>
    运行:

     

     
  • 相关阅读:
    解决 JDK1.7 不支持 VCenter 6.7 的问题(涉及到Https TLS1.2协议)
    无法删除另一个分区的windows文件夹
    首次将项目从eclipse提交到服务器的SVN
    无法截图右键菜单
    配置文件无法修改(以修改my-default.ini为例)
    运行JavaWeb项目报错Access denied for user 'root'@'localhost' (using password: YES)
    jquery.page.js插件在使用时重复触发“上一页”和“下一页”操作
    请求ajax失败的原因(进入到error)
    ajax请求执行完成后再执行其他操作(jQuery.page.js插件使用为例)
    img标签src资源无法加载,报net::ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION错
  • 原文地址:https://www.cnblogs.com/xiaoguanqiu/p/4646817.html
Copyright © 2011-2022 走看看