<强>断言强>
单元测试框架的核心是断言方法,通常叫assert ()。
该方法通常接收一个值,需要断言的值,以及一个表示该断言目的的描述。
如果该值执行的结果为真的,断言就会通过;
否,则断言就会被认为是失败的。
通常用一个相应的通过(通过)/失败(失败)标记记录相关的信息;
函数声明(价值,desc) { 让李=document.createElement(‘李’); 李。className=价值& # 63;“通过”:“失败”; li.appendChild (document.createTextNode (desc)); . getelementbyid(结果).appendChild(李); }//断言函数 函数声明(价值,desc) { 如果(值){ 控制台。日志(033年\ [32 m 033 {desc} \ [0 m”);//断言通过绿色字体 其他}{ 控制台。日志(033年\ [31 033 $ {desc} \ [0 m ');//断言失败红色字体 } }
<强>函数强>
-
<李> JavaScript是一门函数式语言李>
<李>在JavaScript中,函数是第一型对象。函数可以共处,可以视作为其他任意类型的对象。就像普通的JavaScript数据类型,,函数可以被任意变量进行引用,或声明成对象字面量,甚至可以将其作为函数参数进行传递。李>
<李>函数是第一型对象李>
<李>可以通过字面量进行创建。李>
<李>可以赋值给变量,数组或其他对象的属性。李>
<李>可以作为参数传递给函数。李>
<李>可以作为函数的返回值进行返回。李>
<李>可以拥有动态创建并赋值的属性。李>
<李>命名一个函数时,该名称在整个函数声明范围内是有效的。如果函数声明在顶层,窗户对象上的同名属性则会引用到该函数。李>
<李>所有的函数都有一个名字属性,该属性保存的是该函数名称的字符串。匿名函数的名字属性值为空。李>
<李>在JavaScript中,作用域是由函数进行声明的,而不是代码块。声明的作用域创建于代码块,但不是终结于代码块(其他语言是终结于代码块的)李>
如果(窗口){ var x=123; } 警报(x); >之前执行代码后,会弹出123,是因为JavaScript在大括号关闭处并没有终止其作用域。
-
<李>变量声明的作用域开始于声明的地方,结束于函数的结尾,与代码嵌套无关。李>
<李>命名函数的作用域是指声明该函数的整个函数范围,与代码嵌套无关;李>
<李>对于作用域声明,全局上下文就像一个包含页面所有代码的超大型函数。李>
<李>所有的函数调用都会传递两个隐式参数:论点和这李>
<强>作为函数进行调用强>
如果一个数不是作为方法,构造器,或者通过应用()或调用()进行调用的,则认为它是“作为函数”进行调用的。
函数忍者(){}; 忍者() var武士=function () {}; 武士()
-
<李>以这种方式调用时,函数的上下文是全局上下文——窗口对象。李>
<强>作为方法进行调用强>
当一个函数被赋值给对象的一个属性,并使用引用该函数的这个属性进行调用时,那么函数就是作为该对象的一个方法进行调用的。
var 0={}; o。无论=function () {};o.whatever ();
-
<李>将函数作为对象的一个方法进行调用时,该对象就变成了函数上下文,并且在函数内部可以以这参数的形式进行访问。李>
作为构造器进行调用
-
<李>将函数作为构造器进行调用,需要在函数调用前使用新关键字
李>
创建一个新的空对象,
传递给构造器都对象是这参数,从而成为构造器的函数上下文;
如果没有显式都返回值,新创建的对象则作为构造器的返回值进行返回。
函数忍者(){ 这一点。潜行=function(){返回;} } var ninja1=new忍者(); var ninja2=new忍者();
构造器的目的是通过函数调用初始化创建新的对象。
函数调用方式差异
-
<李>函数调用方式之间点主要差异是:作为这参数传递给执行函数的上下文对象之间点区别。