javascript读书随笔2

2.1 require.js与AMD规范

require.js是一种支持AMD规范,是一种能将web前端变成模块化编程的框架,其中最重要的两个函数为require和define。define是开发者开发的方法,require是模块试用者关心的方法。

AMD规范即异步模块定义。

2.2加载器所在路径探知

补充知识点1:window.error简单解析

在javascript中也存在try-catch语句,在window.error中会传给error三个参数,第一个为message,是我们在throw  new error中可以自行添加,也可以是系统自动给出。第二个参数为scriptURI,第三个参数为lineNumber,即你发生错误的代码的文件路径和代码行数。

如果在window.onerror绑定一个函数,然后改函数返回一个true浏览器将不会在状态栏中提示错误;默认返回false;

补充知识点2:js文件的加载解析

以我们已知的知识我们知道,所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等。至到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。然而更加深入的理解js解析时,我们可以将js分为嵌入式和外部调用式的

嵌入式js:在js程序执行完之前,js会阻塞所有内容的呈现。

引入式js:js只会阻塞在其后的内容呈现。

番外篇:css文件,图片文件等都是可以并行下载的,但是如果其后有段js代码,它将会以js代码为分割线完成js代码前的下载,再进行后面的文件下载。

根本原因:因为浏览器会维持html中css和js的顺序,样式表必须在嵌入的JS执行前先加载、解析完。而嵌入的JS会阻塞后面的资源加载,所以就会出现上面CSS阻塞下载的情况。

推荐的一些方法:

1、放在底部,虽然放在底部照样会阻塞所有呈现,但不会阻塞资源下载。
       2、如果嵌入JS放在head中,请把嵌入JS放在CSS头部。

3、使用defer
       4、不要在嵌入的JS中调用运行时间较长的函数,如果一定要用,可以用setTimeout来调用   //其实是将它放入事件队列

补充知识点3:在ie下node.getAttribute的第二个参数含义

在ie下node,getAttribute具有第二个参数

0     ---------  默认为0,执行一个大小写不明感的属性查找,当属性存在返回一个修改的属性

1     ---------  执行一个大小写敏感的属性查找。大写字母和小写字母必须完全比配节点属性名

2     ---------  返回一个string类型的属性值,第二个参数为2对事件属性不起效果

4     ---------  返回一个完整的URL属性,这支队URL属性有效

function getBasePath(){
    //请看补充知识点1
    try{
        a.b.c();
    }catch(e){
        if(e.fileName){         //firefox
            return e.fileName
        }else if(e.sourceURL){       //safari
            return e.sourceURL;
        }
    }
    /*
    理解下一段,请先看补充知识点2
    */
    var nodes=document.getElementsByTagName("script")
    if(window.VBArray){   //ie678识别方法 例如!-[1,]
        for(var i=nodes.length,node;node=nodes[--i]){
            if(node.readyState==="interactive"){  //
                break;
            }
        }
    }else {
        node=nodes[nodes.length-1];
    }
    var src = document.querySelector ? node.src:node.getAttribute("src",4);  //请看补充知识点3
    return src;
}
时间: 2024-11-09 02:41:32

javascript读书随笔2的相关文章

javascript读书随笔 1

1.1 jQuery 的 noConflict 1 var _jQuery=window.jQuery //window.jQuery可能是别的库的变量名,先用jQuery对象中的临时变量存下来---var _jQuery 2 _$=window.$ //同上 3 jQuery.extend({ 4 noConflict:function(deep){ 5 window.$=_$; 6 if(deep){ //如果jQuery是需要深度让出全局变量名时,将noConflict函数传入一个参数,只

Javascript读书笔记:函数定义和函数调用

定义函数 使用function关键字来定义函数,分为两种形式: 声明式函数定义: function add(m,n) { alert(m+n); } 这种方式等同于构造一个Function类的实例的方式: var add = new Function("m", "n", "alert(m+n);"); Function类构造方法的最后一个参数为函数体:"alert(m+n);",前面的都是函数的形参,参数必须是字符串形式的:&

Javascript读书笔记:字符串常用方法

concat() 连接多个字符串,返回合并后的字符串. 1 var s1="a"; 2 var s2="b"; 3 var s3="c"; 4 5 console.log(s1.concat(s2,s3));//abc 数组中的concat():将参数添加为数组的元素,返回新的数组. 1 var arr = [1, 2, 3]; 2 console.log(arr.concat(4, 5));//[1,2,3,4,5] indexOf() 查找子

高性能javascript读书笔记(三.DOM 编程1)

第三章DOM Script DOM编程 读书笔记 访问和修改DOM元素 浏览器通常要求DOM实现和JavaScript保持相互独立. <!-- 例如IE中,被称为JScript的JavaScript实现位于库文件jscript.dll中,而DOM实现位于另一个库mshtml.dll(内 部代号Trident).这种分离技术允许其他技术和语言,如VBScript,受益于Trident所提供的DOM功能和渲染功能.Safari使用Webkit的WebCore处理DOM和渲染,具有一个分离的JavaS

javascript闭包(Effective JavaScript读书笔记)

Effective JavaScript:编写高质量JavaScript代码的68个有效方法: Item 11:   Get Comfortable with Closures Closures may be an unfamiliar concept to programmers coming from languages that don’t support them. And they may seem intimidating at first. But rest assured tha

Javascript初学随笔

两种常用的表述方式:Javascript是一种脚本语言,必须置于<script></scirpt>之间,可以放在<body>或<head>部分,不过不建议放在<body>部分. 最好放在<head> 或者 新建一个js文件(Javascript的扩展名)在<head>中通过<script src=""></script>来调用 分号(;):java和javascript不一样,j

JavaScript 闭包(随笔)

闭包,伟大的闭包.... 先看看百科对百度的定义是什么样的. 百科说:闭包是指可以包含自由(未绑定到特定对象)变量的代码块:这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量). 看完整个人都不好了.  这都是什么鬼??? 还是自己总结下: 什么样才能产生闭包?在javascript技术层面上来说父函数嵌套子函数的形式就可能会产生闭包函数.如这样的: //闭包函数fn的创建 function fn (){ var a = 2; var b = 4; fu

JavaScript读书笔记(4)-变量、作用域和内存问题

1.ECMAScript数据类型分为:基本类型值和引用类型值: ECMAScript中所有函数的参数都是按值传递的: 检查对象的类型:varible instanceof constructor Alert(person instanceof Object); 2.  执行环境和变量 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中: 全局执行环境是最外围的一个指定环境,在web浏览器中,全局执行环境是window对象,所有的全局变量和函数都是window对象

JavaScript读书笔记(2)--数据类型

1.  严格模式:在javascript中定义了一种不同的解析与执行模型.在严格模式下,一些不确定的行为将得到处理,对某些不安全的操作也会抛出错误. 用法是在脚本中添加:”use strict”; 这是一个编译指示,用于告诉引擎切换到严格模式: 2.  Javascript中的语句,若没有带分号,由解析器确定语句的结尾,但不推荐这么做: Javascript关键字: break,case,catch,continue,debugger*,default,delete,do,else,finall