日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ES5-17/18 错误信息、try_catch、严格模式

發(fā)布時間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ES5-17/18 错误信息、try_catch、严格模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

錯誤信息

語法錯誤

  • 標識符名稱(變量、函數名)不規(guī)范
  • 對關鍵字賦值
  • 基本語法錯誤,如分號打錯
  • 引用錯誤

  • 變量、函數未聲明
  • 給無法賦值的對象賦值var a = 1 = 2
  • 范圍錯誤

  • 數組長度為負數
  • 方法參數超出可行范圍toFixed(-1)
  • 類型錯誤

  • 調用不存在的方法
  • new一個非構造函數的內容 var a = new 'String'
  • URIError

    • decodeURI()傳非法參數
      URI 統(tǒng)一資源標識符 uniform resource indentified
      URN 統(tǒng)一資源名稱 uniform resource name
      URL 統(tǒng)一資源定位符 uniform resource locator(URI+URN)
      瀏覽器會將地址轉換為中文編碼字符(有可能是UNICODE、GBK…)
    encodeURI() decodeURI()

    EvalError

    • eval函數執(zhí)行錯誤
    • json字符串、json對象中不能有方法
    // eval 將json字符串轉為對象 var arr = [{name: 'Leo',},{name: 'Krystal',},{name: 'Jessica',} ] var jsonArr = JSON.stringify(arr) console.log(jsonArr) console.log(eval('(' + jsonArr + ')')) console.log(eval(jsonArr))

    不建議使用eval

  • 語法規(guī)范混亂
  • 斷點調試不變
  • 性能問題
  • 代碼壓縮時可能會有意外的錯誤
  • 容易引起XSS攻擊
  • 可讀性差
  • 錯誤

    JS錯誤信息類型


    try catch finally throw

    手動拋出錯誤的方法

    • try的內容正常執(zhí)行時,不走catch
    • 可能會錯誤的放try里,一定能執(zhí)行的放finally里

    • JSON.parse()參數不能是空字符串或undefined,必須是JSON字符串
    • throw要寫在可能會出錯的代碼段前, catch(e) 可以拋出自定義信息e
    try {console.log('正常執(zhí)行')if (jsonStr == '') {throw 'JSON字符串為空'}console.log(JSON.parse(jsonStr))} catch (e) {console.log(e) // JSON字符串為空 }

    嚴格模式

    ECMAScript

    • JavaScript語法規(guī)范
    • 97 1.0
    • 98 2.0
    • 99 3.0 JS通行標準
    • 07 4.0草案 激進 瀏覽器廠商不接受 只有Mozilla支持
    • 08 4.0中止 容易改善的版本放到3.0中 → 3.1 剩下4.0的部分 → Harmony未發(fā)布
    • 3.1更名為 ECMAScript5
    • 09 5.0 發(fā)布 Harmony = JS.next+ JS.next.next
    • 11 5.1 ISO國際標準
    • 13 ES6草案發(fā)布 = js.next ES7 = JS.next.next
    • 15 ES6正式發(fā)布,ECMAScript2015

    ES5

    • 正常模式 嚴格模式
    • 啟動嚴格模式:在腳本首行或函數體首行寫use strict
    • with可以改變作用域(因此會消耗性能)
    • 嚴格模式不能使用with、caller、callee
    • 嚴格模式下不能不寫var
    • 嚴格模式下,函數內部fn使用this指向undefined,但new fn實例化返回的this還是指向實例
    • 嚴格模式下,函數參數不能重復
    • 嚴格模式下,對象的屬性不能重復
    • 嚴格模式下,eval有自己的作用域,內部用var聲明的變量不再是全局的
    var a = 1; var obj = {a: 2 } function test(tScope) {var a = 3;with (tScope) {console.log(a)} } test(window) // 1 test(obj) // 2 test(test) // 3

    • 早期開發(fā),設置命名空間,防止命名重復的方法

    • 多人協(xié)作完成一個js文件,模塊化 → 命名空間不重復

      沒區(qū)別啊

    總結

    以上是生活随笔為你收集整理的ES5-17/18 错误信息、try_catch、严格模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。