美文网首页
JS基础学习:函数

JS基础学习:函数

作者: Merbng | 来源:发表于2019-03-28 21:55 被阅读0次

函数:

把一坨重复的代码封装,在需要的时候直接调用即可。

作用:

代码的重用

函数也是一种数据类型

<script type="text/javascript">
            function f1() {
                console.log("嘻嘻嘻嘻嘻")
            }
            console.log(typeof f1); //function


            function f1(fn) {
                fn(); //函数调用- 说明fn这个变量中存储的是一个函数
            }

            function f2() {
                console.log("看我看我卡")
            }
            f1(f2);
</script>

函数作为参数使用

函数可以作为参数使用,如果一个函数作为参数,那么我们可以说这个参数(函数)叫回调函数

只要看到一个函数作为参数使用了,就是回调函数

        <script type="text/javascript">
            function sayHi(fn) {
                console.log("没没没");
                fn();
            }

            function suHay() {
                console.log(",啊,啊,")
            }
            sayHi(suHay);
        </script>

函数作为返回值使用

函数可以作为返回值使用

        <script type="text/javascript">
            function f1() {
                console.log("f1函数调用了");
                return function() {
                    console.log("这是函数");
                }

            }
            var f = f1();
            f();
        </script>

作用域

JS没有块级作用域
全局变量:
(除函数内)声明的变量是var声明的,可以在全局中使用
如果页面不关闭,那么就不会释放,就会占空间,消耗内存
局部变量:
函数内部定义的,外面不能使用
全局作用域:全局变量的使用范围
隐式全局变量:
声明的变量没有var ,就叫隐式全局变量。
全局变量是不能被删除的,但是隐式全局变量是可以被删除的
定义变量使用var是不会被删除的,没有var 是可以被删除的

        <script type="text/javascript">
            function f1() {
                number = 1000;
            }
            f1();
            console.log(number);

            var n1 = 10;
             n2 = 20;//隐式全局变量
            delete n1;//使用var是不会被删除的
            delete n2;//把n2删除了
            console.log(n1);
            console.log(n2);
        </script>

预解析
js代码的执行是由浏览器的js解析器来执行的,js解析器解析js代码的时候,分为两个过程

预解析过程:
1.把变量的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值。
2.把函数的声明提升到当前作用域的最前面,只会提升声明,不会提升调用。
3.先提升var,再提升function

<script type="text/javascript">
            //          var a = 25;
            // 
            //          function abc() {
            //              alert(a);
            //              console.log(a); //undefined
            //              var a = 10;
            //              // 只会提升声明,不会提升赋值
            //              /* 相当于 
            //              var a;
            //              console.log(a);
            //              a = 10;
            //              */
            //          }
            //          abc();
            //          //访问不了局部变量,
            //          console.log("值:"+a);//25
            //          console.log("第一个:"+a());
            // 
            //          function a() {
            //              console.log('aaaaaaaa');
            //          }
            //          var a = 1;
            //          console.log(a);
            // 结果:aaaaaaaa
            // 预解析.html:30 第一个:undefined
            // 预解析.html:36 1

            // 相当于  var a;  
            //          a=18;
            var a = 18;
            // 相当于
            /*          function f1() {
                            var b = 9;
                            console.log(a); //undefined
                            var a = '123';
                        }
                        f1(); */
            f1();
            function f1() {
                var b = 9;
                console.log(a); //undefined
                var a = '123';
            }
        </script>

预解析识别:

<script type="text/javascript">
//          f1();
//          console.log("函数外c:" + c);
//          console.log("函数外b:" + b);
//          console.log("函数外a:" + a);
// 
//          function f1() {
//              var a = b = c = 9;
//              console.log("函数内a:" + a);
//              console.log("函数内b:" + b);
//              console.log("函数内c:" + c);
//          }
            f1();//报错
            // 案例
            var f1 = function() {
                console.log(a);
                var a = 10;
            }
        </script>

相关文章

  • JavaScript函数之递归

    JS函数 从本篇文章开始,我们将继续回到JavaScript函数的学习。在学JS基础时我们初步学习了函数,讲解了函...

  • JS基础学习:函数

    函数: 把一坨重复的代码封装,在需要的时候直接调用即可。 作用: 代码的重用 函数也是一种数据类型 函数作为参数使...

  • 前端面试题(持续补充)

    js,node.js基础: 闭包 闭包是能够读取其他函数内部变量的函数。在js中,只有函数内部的子函数可以访问内部...

  • 2017-4-1 VUE

    JS的方法 1、类型判断的方法 2、创建对象构造函数 3、JS基础函数和语法

  • JavaScript基础知识点整理(下)

    在上一篇文章《JS基础知识点(一)》中我们学习了什么是js、js写法、js数据类型、js的函数。在本篇文章中我们将...

  • js基础

    js基础 函数 重点掌握 ​ 如何声明,如何调用,如何写函数 声明 ​ function 函数名(...

  • JS基础和WebAPIs的关联性

    学习ECMAscript标准规定的基本语法掌握JS基础语法只学习JS基础做不了网页交互效果学习JS基础语法是为了后...

  • React-Native 随笔

    学习基础: js的基础知识, rect.js基础 JSX语法基础 FlexBox布局 安装 安装node.js下载...

  • 01-25 js基础属性

    什么是js 一:js基础语法 二:变量 三:运算符 四:分之结构 五:循环 六:函数function 函数名(参数...

  • js面向对象

    有java基础学习js的面相对象就容易很多,主要记录一下重点; 在js中没有class的概念,只有构造函数,或者说...

网友评论

      本文标题:JS基础学习:函数

      本文链接:https://www.haomeiwen.com/subject/glrhbqtx.html