zoukankan      html  css  js  c++  java
  • Javascript基础知识整理

    1.ECMAScript有5中简单数据类型 Undefined,Null,Boolean,Number,String  一种复杂数据类型 Object

    2.undefined 不是未定义,而是声明之后没有对其进行初始化(赋值)

    3.基本类型的值无法添加属性,只能给引用类型的值添加。

    4.typeof 用来检测基本数据类型 instanceof 则用来检测引用数据类型

    5.数组:数组的length属性是可读写的,通过设置length可以从数组的末尾移动项或向数组中添加新项。

    数组可以使用push方法(在数组尾部追加项并返回改后长度)和pop方法(删除尾部项,并返回该项) 模拟栈的数据结构。
    也可以使用push+shift或unshift+pop实现队列数据结构
    注:IE7及以下版本的unshift()方法返回undefined而不是新数组长度

    6.变量、函数及函数表达式的声明

    JS中的变量采用预声明的方式 即无论声明的位置在哪里,解析器会在进入该执行上下文的时候首先对其进行声明,并初始化为 undefined.

    function xx(){
      a();
      b();
      var m = 1;
      if(false){
        var n = "s";
      }
    }
    实际效果
    function xx(){
      var m,n;
      a();
      b();
      m = 1;
      if(false){
        n = "s";
      }
    }

    而对于函数,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);

    至于函数表达式,则必须等到解析器执行到它所在的位置时,才会真正被解释执行。

    虽然变量声明会提到执行上下文顶部,但如果声明之前就已经存在同名变量,则不会进行声明。如下

    (function(a){
        console.log(a);
        var a = 1;//因为预声明之前 该变量名已存在,所以不会进行重新声明
    })(2)

    7.事件处理不要放在页面上,不利用页面维护,建议将这些处理函数都封装在单独的js文件里(如果你用的是Knockout.js或者MVVM的其他框架,那就另说了)


    8.在JS中可以使用try-catch来处理异常,但在我看来单纯用于捕获预料之外的错误,如果开发者足够严谨的话,try-catch是没有必要的;并且用的话也绝对不要在catch里什么也不做!!否则的话页面上出问题的时候你根本不知道是哪里出了问题。

    推荐方法:

    • 向用户简单的提示一些错误信息,如"您查找数据不存在"之类的。
    • 什么也不显示,但是要将真正的错误信息及发生地点存入一个变量或者隐藏控件。

    9. Js文件的延迟加载。

    因为Web页面的资源都需要从远程服务器获取,所以经常有网速慢而造成页面显示迟缓的问题。这主要就是因为文件的下载占用了页面显示的线程

    解决方法有两种

    1:将文件的加载放到DOM加载之后,即body的结束位置。

    <html>
    <body>
        <h1>Page is loading</h1>
        ......
        ......
        <script src = "xx.js"></script>
    </body>
    </html>

    2:给script标签添加异步加载的属性

    <script src="xx.js" defer async="true" ></script>

    其中 defer是为了兼容IE的。


    10.绝对路径(Web应用根目录)  : "/";例如

    <script src="/Scripts/common.js"></script>

  • 相关阅读:
    【原创翻译】给前端小白的现代JavaScript工作流程详解 | Modern JavaScript Explained For Dinosaurs
    JavaScript音频可视化
    CSS两种布局记录
    飞桨|PaddlePaddle YoloV3学习笔记
    飞桨|PaddlePaddle第二周学习笔记|卷积神经网络、计算机视觉相关知识
    求所有不重复路径, Unique Paths | 换硬币问题 LeetCode题解(四)
    最大子数组,Maximum Subarray| Best Time to Buy and Sell Stock, LeetCode题解(三)
    合并k个有序链表, LeetCode题解(二)
    TwoSum, ThreeSum, 数字链表相加, LeetCode题解(一)
    最长公共子序列、最长重复子串
  • 原文地址:https://www.cnblogs.com/TiestoRay/p/2653422.html
Copyright © 2011-2022 走看看