JavaScript函数、闭包、原型、面向对象

 

断言

单元测试框架的核心是断言方法,通常叫assert()。
该方法通常接收一个值--需要断言的值,以及一个表示该断言目的的描述。
如果该值执行的结果为true,断言就会通过;
否则,断言就会被认为是失败的。
通常用一个相应的通过(pass)/ 失败(fail)标记记录相关的信息;

function assert(value, desc) {     let li = document.createElement('li');     li.className = value ? 'pass' : 'fail';     li.appendChild(document.createTextNode(desc));     document.getElementById('results').appendChild(li); }  // 断言函数 function assert(value, desc) {     if (value) {         console.log(`\033[32m ${desc} \033[0m`);    // 断言通过 绿色字体     } else {         console.log(`\033[31m ${desc} \033[0m`);    // 断言失败 红色字体     } }

函数

  • JavaScript是一门函数式语言

  • 在JavaScript中,函数是第一型对象。函数可以共处,可以视作为其他任意类型的对象。就像普通的JavaScript数据类型,,函数可以被任意变量进行引用,或声明成对象字面量,甚至可以将其作为函数参数进行传递。

  • 函数是第一型对象
    • 可以通过字面量进行创建。
    • 可以赋值给变量、数组或其他对象的属性。
    • 可以作为参数传递给函数。
    • 可以作为函数的返回值进行返回。
    • 可以拥有动态创建并赋值的属性。
  • 命名一个函数时,该名称在整个函数声明范围内是有效的。如果函数声明在顶层,window对象上的同名属性则会引用到该函数。

  • 所有的函数都有一个name属性,该属性保存的是该函数名称的字符串。匿名函数的name属性值为空。

  • 在JavaScript中,作用域是由function进行声明的,而不是代码块。声明的作用域创建于代码块,但不是终结于代码块(其他语言是终结于代码块的)

if (window) {     var x = 123; } alert(x);  执行代码后,会弹出123,是因为JavaScript在大括号关闭处并没有终止其作用域。
  • 变量声明的作用域开始于声明的地方,结束于函数的结尾,与代码嵌套无关。

  • 命名函数的作用域是指声明该函数的整个函数范围,与代码嵌套无关;

  • 对于作用域声明,全局上下文就像一个包含页面所有代码的超大型函数。

  • 所有的函数调用都会传递两个隐式参数:argument和this

作为函数进行调用

如果一个数不是作为方法、构造器、或者通过apply()或call()进行调用的,则认为它是“作为函数”进行调用的。

function ninja() {}; ninja()  var samurai = function() {}; samurai()
  • 以这种方式调用时,函数的上下文是全局上下文---window对象。

作为方法进行调用

当一个函数被赋值给对象的一个属性,并使用引用该函数的这个属性进行调用时,那么函数就是作为该对象的一个方法进行调用的。


                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信