作者
JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”(script language),指的是它不具备开发操作系统的能力,而是只用来编写控制其他大型应用程序(比如浏览器)的“脚本”。 JavaScript 只合适嵌入更大型的应用程序环境,去调用宿主环境提供的底层 API。 目前,已经嵌入 JavaScript 的宿主环境有多种,最常见的环境就是浏览器,另外还有服务器环境,也就是 Node 项目。
目录
易忽略的js
落霞与孤鹜齐飞 7月11日 7 1 0 7 1 0
JS有哪些错误

先来认识 Error 实例对象和其属性

var err = new Error("go wrong")
console.log(err.message)
console.log(err.name)
console.log(err.stack)
throw err

原生错误对象

  • SyntaxError 语法错误

    var 1a
    var err = new SyntaxError("语法错误")
    throw err;
    
  • ReferenceError 不存在

    a // Uncaught ReferenceError: a is not defined
    
  • RangeError 超出有效范围

    new Array(-1) // Uncaught RangeError: Invalid array length
    
  • TypeError 变量或参数不是预期类型时发生的错误

    new 123 // Uncaught TypeError: 123 is not a constructor
    var obj={}; 
    obj.hello() // Uncaught TypeError: obj.hello is not a function
    
  • URIError
    URI相关函数的参数不正确时抛出的错误,主要涉及encodeURI(“中文变成一串有百分比符号的”)、decodeURI(“解码encodeURI()编码过的”)、encodeURIComponent()、decodeURIComponent()、escape(“两斜杠加五位数的形式”)和unescape()这六个函数。

    decodeURI("%u7C9F%u7C73") // Uncaught URIError: URI malformed 只能用unescape解析
    
  • EvalError 函数没有被正确执行时

错误捕获

因为一旦发生错误,程序就中止执行了。JavaScript 提供了try…catch结构,允许对错误进行处理,选择是否往下执行。

try{
    if(a){}
}catch(err){
    console.log(err.name); // ReferenceError
    console.log(err.message); // a is not defined
}

try…catch结构允许在最后添加一个finally代码块,表示不管是否出现错误,都必需在最后运行的语句。

try{
    console.log(a)
}finally{
    console.log(1)
}

没有catch,程序中断,中断之前,执行finally

关于js获取位置和宽高容易忽略的地方
  • 浏览器滚动条的左边界和上边界可以通过$(window).scrollLeft()$(window).scrollTop()来获得

  • 窗口定位到屏幕可视区域的正中间,需要用屏幕可视区域的宽减去窗口的宽,然后除2,再加上滚动条的左边界值,才能获得窗口需要的左边界值;上边界值也是同理的方法获得。

  • jq中height()width()方法获得是元素本身的高和宽
  • innerHeight()innerWidth()获得是包括了padding的高和宽
  • outerHeight()和outerWidth()获得是包括了border和padding的高和宽
  • outerHeight(true)和outerWidth(true)获得是包括maring,border和padding的高和宽
  • 只有position的值为relative或absolute的元素,z-index才会生效
DOM节点

所有 DOM 节点对象都继承了 Node 接口,拥有一些共同的属性和方法。这是 DOM 操作的基础。

  • nodeType属性返回一个整数值,表示节点的类型。

    • 文档节点(document):9,对应常量Node.DOCUMENT_NODE
    • 元素节点(element):1,对应常量Node.ELEMENT_NODE
    • 属性节点(attr):2,对应常量Node.ATTRIBUTE_NODE
    • 文本节点(text):3,对应常量Node.TEXT_NODE
    • 文档片断节点(DocumentFragment):11,对应常量Node.DOCUMENT_FRAGMENT_NODE
    • 文档类型节点(DocumentType):10,对应常量Node.DOCUMENT_TYPE_NODE
    • 注释节点(Comment):8,对应常量Node.COMMENT_NODE
  • nodeName属性返回节点的名称。

    • 文档节点(document):#document
    • 元素节点(element):大写的标签名
    • 属性节点(attr):属性的名称
    • 文本节点(text):#text
    • 文档片断节点(DocumentFragment):#document-fragment
    • 文档类型节点(DocumentType):文档的类型
    • 注释节点(Comment):#comment
  • nodeValue属性返回一个字符串,表示当前节点本身的文本值,该属性可读写。

只有文本节点(text)、注释节点(comment)和属性节点(attr)有文本值,因此这三类节点的nodeValue可以返回结果,其他类型的节点一律返回null。同样的,也只有这三类节点可以设置nodeValue属性的值,其他类型的节点设置无效。

扫码分享到移动端
0 条评论
快来写一写读后感吧~
参与评论互动
登录即可参与评论互动哦