函数(预定义函数,自定义函数,函数传参)

预定义函数
1.eval()    将字符串数字转换成数字,可进行直接执行 js 代码
2.isNaN()     用来计算一个参数以确定它是否为非数字
isNaN() 函数用于检查其参数是否是非数字值。
如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。

isNaN本意是通过Number方法把参数转换成数字类型,若转换成功,则返回false,反之返回true,它只是判断参数是否能转成数字,不能用来判断是否严格等于NaN。,如果要判断某个值是否严格等于NaN不能用这个方法
ES6提供了Number.isNaN方法用来判断一个值是否严格等于NaN,它会首先判断传入的值是否为数字类型,如果不是,则返回false。

区别:
isNaN方法首先转换类型,而Number.isNaN方法不用;
isNaN不能用来判断是否严格等于NaN,Number.isNaN方法可用
3.parseInt()/ parseFloat ()   将数字字符串转化为一个数值
4.isFinite()    用来确定参数是否是一个有限数值 . 也就是说 , 如果该参数为非数字 NaN , 正无穷数 , 或负无穷数 , 则返回 false, 否则返回 true; 如果是字符串类型的数字 , 将会自动关转化为数字型 .
5. escape 函数 / unescape ()     将字符串进行编码和解码​,这样就可以在所有的计算机上读取该字符串。
返回值 : 已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- this
        <button onclick="box()" id="btn">按钮</button> -->
</body>
<script>
    //     预定义函数
    //     1.eval()    将字符串数字转换成数字,可进行直接执行js代码
    //     2.isNaN()     用来计算一个参数以确定它是否为非数字
    //     isNaN() 函数用于检查其参数是否是非数字值。
    // 如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。

    //     isNaN本意是通过Number方法把参数转换成数字类型,若转换成功,则返回false,反之返回true,它只是判断参数是否能转成数字,不能用来判断是否严格等于NaN。,如果要判断某个值是否严格等于NaN不能用这个方法
    //     ES6提供了Number.isNaN方法用来判断一个值是否严格等于NaN,它会首先判断传入的值是否为数字类型,如果不是,则返回false。

    //     区别:
    //     isNaN方法首先转换类型,而Number.isNaN方法不用;
    //     isNaN不能用来判断是否严格等于NaN,Number.isNaN方法可用

    //     3.parseInt() / parseFloat()   将数字字符串转化为一个数值
    //     4.isFinite()    用来确定参数是否是一个有限数值.也就是说, 如果该参数为非数字NaN, 正无穷数, 或负无穷数, 则返回false, 否则返回true; 如果是字符串类型的数字, 将会自动关转化为数字型.
    // 5. escape函数 / unescape()    将字符串进行编码和解码​,这样就可以在所有的计算机上读取该字符串。
    //     返回值:已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列
    
    //eval()把字符串当作js代码执行
    // console.log("1+1");
    // console.log(eval("1+1"));
    // "alert(1111)"
    // eval("alert(1111)");

    // isNaN(参数) 判断参数是否是NaN,如果是,返回true, 否则返回false
 
    // isNaN(参数)   全局方法   会进行类型转换 再判断是否是NaN
    // 1.参数是NaN,会返回true
    // 2.参数进行类型转换,转数字失败也会得到NaN,也会返回true
 
    // 1.Number.isNaN(参数)  不会进行类型转换  只有参数是NaN才返回true, 否则返回false

    // console.log(isNaN(NaN));//true
    // console.log(isNaN("abc"));//true  类型转换
    // console.log(isNaN(123));//true

    // console.log(Number.isNaN(NaN));//true
    // console.log(Number.isNaN("abc"));//false
    // console.log(Number.isNaN(123));//false
    // var a = 123 + undefined
    // console.log(Number.isNaN(a));//true
    // console.log(Number.isNaN(123 + null));//false
    // console.log(Number.isNaN("abc" + 123));//false
    // console.log(Number.isNaN("abc" - 123));//true


    // isFinite(参数) 判断参数是否是一个有限数值  如果是有限数值,返回true,否则返回false(NaN, Infinity,-Infinity,..)
    // 会进行类型转换

    // Number.isFinite(参数) 判断参数是否是一个有限数值
    // 不会进行类型转换


    // console.log(isFinite(123));//true
    // console.log(isFinite("123"));//true
    // console.log(isFinite("123a"));//NaN  false
    // console.log(isFinite(true));//true
    // console.log(isFinite(1 / 3));//true
    // console.log(isFinite(1 / 0));//Infinity  false
    // console.log(isFinite(-1 / 0));//-Infinity  false


   


    // encodeURI(参数)  参数:字符串
    // 把字符串转义为计算机编码
    // 编码

    // decodeURI(参数)  参数:字符串
    // 解码
</script>

</html>

 自定义函数

function 函数名(){  

  函数体;

 }

说明:

 function       定义函数关键字,

“函数名”      是你给函数取的名字,

“函数体”      是为完成特定功能的代码。

  函数名              必须是唯一的

函数定义好后,不能自动执行,需要调用它,直接在需要的位置写函数名。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button onclick="sayHello()">按钮</button>
</body>
<script>

      //自定义函数

    //         function 函数名() {
    //             函数体;
    //         }
    //         说明:
    //         function 定义函数关键字,
    // “函数名”      是你给函数取的名字,
    // “函数体”      是为完成特定功能的代码。
    // 函数名              必须是唯一的
    //函数定义好后,不能自动执行,需要调用它,直接在需要的位置写函数名。

    // 调用函数
    // sayHello();
    // sayHello();
    // 一个函数定义好了后,不会自动执行,需要调用

    // 驼峰式命名法
    // 定义函数
    // function  函数名(){
    //     函数体;
    // }
    // 调用函数
    // 函数名()
    // function sub2() {
    //     var a = 10, b = 5;
    //     return a - b;
        // return true;
        // return;//函数运行后得到的具体值
    //  }
    // 返回值
    // var flag = sub2();
    // console.log(flag);

    //自定义函数例子
    // var count = 0;
    // function sayHello() {
    //     count = count + 1;
    //     alert("hello world" + count);
    // }

    // confirm()   布尔值  true false
    // propmt()   字符串 / null
    // function box(){}
    // box()


    // 匿名函数
    // var box = function () {
    //     alert("hello world");
    // };
    // console.log(box);
    // box();



    // IIFE(Immediately Invoked Function Expression)  立即调用函数表达式

    // 自我执行函数
    // 这里的 ~ , * , + , - , !等其他一元操作符,
    // 其效果相当于:
    // (function () {
    //     alert("hello world");
    // })();// 模仿块级作用域

    // 把该函数变成自执行函数

    // +function () {
    //     alert("hello world");
    // }();

    // -function () {
    //     alert("hello world");
    // }();


    // ~function () {
    //     alert("hello world");
    // }();

    // !function () {
    //     alert("hello world");
    // }();




</script>

</html>

 函数传参

   

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // //定义函数
        // function zhazhi(a) {//形参a,b
        //     alert(a + "汁"); //“苹果”+“汁"
        // }
        // // 调用函数
        // zhazhi("苹果");//实参zhazhi("苹果");//实参

        //定义函数
        function zhazhi(a, b) {//形参a,b
            alert(a + b + "汁"); //“苹果”+“汁"
        }
        // 调用函数
        zhazhi("苹果", "桃子");//实参zhazhi("苹果","桃子");//实参
        zhazhi("火龙果", "柠檬");

        //复用高 封装代码
        //求2个数的和
        // function add(x, y) {
        //     return x + y;
        // }

        // //调用函数
        // var sum = add(96, 5);
        // console.log(sum);

        function fun(a, b, c) {
            console.log(arguments);//参数对象
            console.log(arguments.length);//实参个数
            // console.log(arguments.callee)//函数本身
            //fun();//递归 函数自己调用自己 
            // arguments.callee();//递归 函数自己调用自己
        }
        fun(1, 2, 3)

        // 5! 5x4x3x2X1
        function jicheng(n) {
            if (n <= 1) {
                return 1;//跳转语句终止函数找出口
            }
            //return n * jicheng(n - 1);
            return n * arguments.callee(n - 1);
        }
        //console.log(jicheng(5);
        console.log(jicheng(10));
        //console.log(fun);


    </script>
</head>

<body>

</body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值