• [暑假]JS学习随笔


    仅了解知识或许会让我们变得博识,但是为了精通可能就需要一点点背诵了

    1. 数组可以通过索引来访问,设置,修改对应的数组元素

                    我们一般用 访问 来表示获取得到的意思

    2. JS中获取数组长度, 使用length属性即可. 

                 数组的长度是元素的个数,是动态变化的且被动态监测

                    

    3. 

    参数说明
    形参形式上的参数 函数定义的时候 传递的参数
    实参 实际上的参数 函数调用的时候传递的参数

                    注意: 如果实参的个数多于形参, 则多余部分的数值不会被获取

                           任何一个值 + undefined = NaN

            函数的形参和实参个数不匹配问题:

                            

    参数个数解释
    实参个数等于形参个数输出正常
    实参个数多余形参个数只取到形参的个数
    实参个数小于形参个数多的形参会被定义为undefined, 结果为 NaN

    4.arguments对象中存储了传递的所有实参

                    arguments展示形式是一个伪数组, 因此可以进行遍历.伪数组具有以下特点:

                                    具有length属性

                                    按照索引方式存储数据

                                    不具有数组的push(向数组末尾添加元素),pop(删除数组最后一个元素)等方法

    5.JavaScript作用域: 指的就是变量在某个范围内起作用和效果  

                                            目的是为了提高程序的可靠性, 更重要的是减少命名冲突

    6. 作用域分为 局部作用域 , 全局作用域 和块级作用域(ES6新增)

                    用 {} 包括的就是块级作用域

    7.变量的作用域: 根据作用域的不同 我们将变量分为 全局变量和局部变量

            注意: 1.如果在函数内部 没有直接声明但是赋值的变量也属于全局变量

                            比如:

                                                    function text() {

                                            num2 = 10; //这个也是全局变量

                            }

            2.全局变量和局部变量的区别: 

                    从执行效率来看:

                                    1) 全局变量只有浏览器关闭的时候才会销毁, 比较占用内存资源

                                    2) 局部变量 当我们程序执行完毕就会销毁, 比较节约内存资源

                    进一步理解:

                                    全局变量(在函数外定义的变量):  

                                                    1.全局变量在代码的任何位置都可以使用

                                                    2. 在全局作用域下 var声明的变量 是全局变量

                                                    3. 特殊情况下, 在函数内不适用var声明的变量也是全局变量(但是不建议使用)

                                    局部变量(在函数内部定义的变量):

                                                     1. 局部变量只能在该函数内部使用

                                                      2. 在函数内部var声明的变量是局部变量

                                                      3. 函数的形参实际上就是局部变量    

    8. 作用域链(就近原则): 

                    根据在内部函数可以访问外部函数变量的这种机制, 用链式查找决定了 哪些数据能被内部函数访问, 就称作作用域链.

                            从我们的目标出发,然后判断输出结果, 比如这道题 就直接看 console.log(), 然后加以判断

                                            

     9.每日一遍 远离被坑

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <script>
    9. // 1.第一个问题
    10. console.log(sum); // 报错
    11. //第二个问题 坑1
    12. console.log(num); //输出undefined
    13. var num = 10;
    14. //第三个问题 坑2
    15. fn();//正常输出 888
    16. function fn() {
    17. console.log(888);
    18. }
    19. // 第四个问题 坑3
    20. fun(); //报错
    21. var fun = function() { //函数表达式
    22. console.log(666)
    23. }
    24. </script>
    25. </head>
    26. <body>
    27. </body>
    28. </html>

    10. 

            Js代码是由浏览器中的 JavaScript解析器来执行的. JavaScript解析器在运行JavaScript代码的时候分为两步: 预解析和代码执行

    11.  我们把JS引擎运行 JS分为两步:  预解析  代码执行

                    1) 什么是预解析?  

                                            JS引擎会把JS里面的所有 var 还有 function 提升到当前作用域的最前面

                    2) 什么是代码执行?

                                            按照代码书写的顺序从上往下执行

    其中 预解析 分为 变量预解析(即变量提升) 和 函数预解析(即函数提升)

                    1) 变量提升 就是把所有的变量声明提升到当前的作用域最前面  但是不提升赋值操作

  • 相关阅读:
    molecular-graph-bert(三)
    Antd表格性能优化
    WooCommerce数据库解释:它是如何工作的以及在哪里可以找到数据
    蓝桥杯刷题(二)
    MacOS 下使用 cloud 版 qcow2镜像的最佳实践
    小红拿到了一个仅由大小写字母组成的长度为n的字符串,她希望把前k个字母变成大写,后n- k个字母变成小写,你能帮帮她吗?
    Promise的学习
    近红外二区AgzS量子点包裹脱氧核糖核酸DNA|DNA-AgzSQDs(齐岳)
    【代码随想录】【数组】59.螺旋矩阵II
    在使用 sqlite 时遇到的奇怪问题的正解
  • 原文地址:https://blog.csdn.net/IDApprentice/article/details/125602204