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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

錯(cuò)誤信息

語法錯(cuò)誤

  • 標(biāo)識(shí)符名稱(變量、函數(shù)名)不規(guī)范
  • 對(duì)關(guān)鍵字賦值
  • 基本語法錯(cuò)誤,如分號(hào)打錯(cuò)
  • 引用錯(cuò)誤

  • 變量、函數(shù)未聲明
  • 給無法賦值的對(duì)象賦值var a = 1 = 2
  • 范圍錯(cuò)誤

  • 數(shù)組長(zhǎng)度為負(fù)數(shù)
  • 方法參數(shù)超出可行范圍toFixed(-1)
  • 類型錯(cuò)誤

  • 調(diào)用不存在的方法
  • new一個(gè)非構(gòu)造函數(shù)的內(nèi)容 var a = new 'String'
  • URIError

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

    EvalError

    • eval函數(shù)執(zhí)行錯(cuò)誤
    • json字符串、json對(duì)象中不能有方法
    // eval 將json字符串轉(zhuǎn)為對(duì)象 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ī)范混亂
  • 斷點(diǎn)調(diào)試不變
  • 性能問題
  • 代碼壓縮時(shí)可能會(huì)有意外的錯(cuò)誤
  • 容易引起XSS攻擊
  • 可讀性差
  • 錯(cuò)誤

    JS錯(cuò)誤信息類型


    try catch finally throw

    手動(dòng)拋出錯(cuò)誤的方法

    • try的內(nèi)容正常執(zhí)行時(shí),不走catch
    • 可能會(huì)錯(cuò)誤的放try里,一定能執(zhí)行的放finally里

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

    嚴(yán)格模式

    ECMAScript

    • JavaScript語法規(guī)范
    • 97 1.0
    • 98 2.0
    • 99 3.0 JS通行標(biāo)準(zhǔn)
    • 07 4.0草案 激進(jìn) 瀏覽器廠商不接受 只有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國(guó)際標(biāo)準(zhǔn)
    • 13 ES6草案發(fā)布 = js.next ES7 = JS.next.next
    • 15 ES6正式發(fā)布,ECMAScript2015

    ES5

    • 正常模式 嚴(yán)格模式
    • 啟動(dòng)嚴(yán)格模式:在腳本首行或函數(shù)體首行寫use strict
    • with可以改變作用域(因此會(huì)消耗性能)
    • 嚴(yán)格模式不能使用with、caller、callee
    • 嚴(yán)格模式下不能不寫var
    • 嚴(yán)格模式下,函數(shù)內(nèi)部fn使用this指向undefined,但new fn實(shí)例化返回的this還是指向?qū)嵗?/li>
    • 嚴(yán)格模式下,函數(shù)參數(shù)不能重復(fù)
    • 嚴(yán)格模式下,對(duì)象的屬性不能重復(fù)
    • 嚴(yán)格模式下,eval有自己的作用域,內(nèi)部用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ā),設(shè)置命名空間,防止命名重復(fù)的方法

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

      沒區(qū)別啊

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。