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)

        }

变量提升练习:


   

   

3.变量return:

/* function fn(){

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

        } */

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

        /* 匿名函数自执行 */

        let str = (function (){

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

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

            if(a

               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的值 */

你可能感兴趣的:(JS常用系统函数,变量提升、变量return、作用域、作用域链、闭包)