JS常用系统函数,变量提升、变量return、作用域、作用域链、闭包

1.常用系统函数:

let num = 12.12;

        /* let num2 = parseInt(num); */

        let num2 = parseFloat(num)

        /* 会把字符串12.12转换为浮点数 */

        console.log(num2);

        let str2 = parseFloat(12.02);

        console.log(str2)

        console.log(isNaN( abc -123))/* 使用is NaN方法来判断是不是一个数字,

        不过不是数字就返回true ,是数字就返回false*/

        /* NaN not a number表明不是一个数字 */

练习:

function fn(){

          let arr = parseFloat(prompt( 请输入 ));

          if(isNaN(arr)){

            alert( 不是数字,请输入数字 )

          }

          else {

   alert(arr)

          }

       }

2.变量提升:

/* 变量提升 */

        /* 当你下面用var的时候会出现变量提升的情况 */

        /* var a = undefind,没有赋值 */

        /* console.log(a)

        var a = 123 ; */

        /* 会报错 */

        /* let 不存在变量提升,不能在还没有初始化的时候使用变量

        否则报错,下面的代码不会执行 */

        /* console.log(a)

        let  a = 123 */

        /* 函数是JS里面的一等公民 */

        /* 声明的function会提升函数到最前面 */

        /* 页面一加载的时候会先找有没有var和function如果发现有var

        就会把变量预定义为undefined,如果没有发现function就会把function放最前面 */

        /* fn()

        function fn(){

            console.log(111)

        } */

        /* 练习,定义一个变量再定义一个函数,变量是一个字符串,在函数打印出来 */

        /* a是全局变量 */

        fn()

        var a = 123 ;

        function fn(){

            console.log(a)

        }

变量提升练习:

<button onclick=”fn()”>新增学员</button>

    <button onclick=”nn()”>显示学员信息</button>

    <script>

        /* 如果函数里面没有let或者var声明变量,a会变成一个全局变量 */

        /* 内部声明的变量只能在函数内部调用 */

            let arr= []

            function fn(){

                /* arr 只有定于全局才不会被重复定义 */

                arr.push( prompt( 请输入新增学员姓名 ))

                };

      function nn(){

          document.write( 共 +arr.length+ 名学员 + 信息如下 + <br> +arr)

      }

 </script>

3.变量return:

/* function fn(){

            return 函数通过return将值返回调用他的地方

        } */

        /* 比较两个数大写并返回 最大的数是。。。’ */

        /* 匿名函数自执行 */

        let str = (function (){

            var a = parseInt( prompt( 请输入第一个数 ));

            var b = parseInt( prompt( 请输入第二个数 ));

            if(a<b){

               return 第二个数最大 ;

            }

            else {

                return 第一个数最大 ;

            }

        })();

        alert(str)

4.作用域:

/* 全局和局部作用域 */

        let a = 132;

        function fn1(){

            console.log(a)

        }

        function fn2(){

            console.log(a)

        }

        /* window.location自带属性 */

5.作用域链:

/* 可以通过代码访问的属性和一系列进攻JS引擎访问的内部属性 */

        let a = 你好

        function fn(){

            a = hello

          document.write(a)

        }

        fn()

        /* 作用域链 第一会在当前的作用域内去变量对应的值

        如果找不到,会向上一层一层的去寻找 */

6.闭包:

/* 一个函数就可以理解为一个闭包 */

        /* 函数外部无法读取函数内部数据 */

        /* function f1(){

            alert(1)

        } */

        function fn1(){

            let a = 1;

            /* fn2就是一个闭包 */

            function fn2(){

                document.write(a)

            }return fn2;

        }fn1()()/* console.log(fn1()) */

        /* 通过这种方式就可以得到fn1局部变量a的值 */

© 版权声明

相关文章

暂无评论

none
暂无评论...