Basic knowledge of javaScript (keep for myself)

1. 函数表达式

JavaScript 函数可以通过一个表达式定义。eg. var x = function (a, b) {return a * b};

so: var x = function (a, b) {return a * b};
  var z = x(4, 3);

以上函数实际上是一个 匿名函数 (函数没有名称)。

函数存储在变量中,不需要函数名称,通常通过变量名来调用。

2. 在 JavaScript 中,很多时候,你需要避免使用 new 关键字。

3. 函数提升(Hoisting): 实际上是指扩展作用域。定义可在使用之后

4. 自调用函数: 实际上是匿名自我调用的函数

eg.

<script>
(function () {
document.getElementById("demo").innerHTML = "Hello! 我是自己调用的";
})();
</script>

5. 函数是对象:

在 JavaScript 中使用 typeof 操作符判断函数类型将返回 "function" 。

但,JavaScript 函数描述为一个对象更加准确。

6. JavaScript 函数有个内置的对象: arguments 对象.它包含了函数调用的参数数组。

7. 值传递参数:不会修改参数初始值;对象传递参数:类似引用,可作用于函数外部。

8. JavaScript中的函数调用还是有点儿说道的:分4种方法进行调用

 (1) 作为一个函数直接调用

eg.

function myFunction(a, b) {
    return a * b;
}
myFunction(10, 2);           // myFunction(10, 2) 返回 20

此时类似于:

function myFunction(a, b) {
    return a * b;
}
window.myFunction(10, 2);    // window.myFunction(10, 2) 返回 20

原因:以上函数并未指定对象,但属于整个HTML页面,所以说属于全局对象,即属于浏览器中的window对象。

  虽然这种函数调用的方式比较常用,但并不是好的编程习惯,会容易造成命名冲突。

  当函数没有被自身的对象调用时, this 的值就会变成全局对象。

  (2)将函数作为对象中的方法调用(类似java中的对象)

eg.

var myObject = {
    firstName:"John",
    lastName: "Doe",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
myObject.fullName();         // 返回 "John Doe"

此时,实例中 this 的值为 myObject 对象。

  (3)使用构造函数调用函数

如果函数调用前使用了 new 关键字, 则是调用了构造函数。

构造函数的调用会创建一个新的对象。新对象会继承构造函数的属性和方法。

  (4)利用apply()和call()方法调用函数

理由:在JavaScript中,函数也是对象,也拥有属性和方法。也就是说,可以利用函数对象中的apply()方法或者call()方法调用函数对象。

eg.

function myFunction(a, b) {
    return a * b;
}
myFunction.call(myObject, 10, 2);      // 返回 20

myArray = [10,2];
myFunction.apply(myObject, myArray);   // 返回 20

在 JavaScript 严格模式(strict mode)下, 在调用函数时第一个参数会成为 this 的值, 即使该参数不是一个对象。

在 JavaScript 非严格模式(non-strict mode)下, 如果第一个参数的值是 null 或 undefined, 它将使用全局对象替代。

9. 在JavaScript中,若变量在声明时没有var关键字,则为全局变量

10. JavaScript 闭包 (??)

时间: 2024-10-26 13:41:24

Basic knowledge of javaScript (keep for myself)的相关文章

The basic knowledge of block

Block(1):基础知识 代码块对象,通常称为代码块,是对C语言中函数的扩展.它有一个更被大家熟知的名字:闭包(closure). 1.使用代码块 首先看一个下面方法的调用过程,该方法接受代码块作为参数: [aDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {     NSLog(@"value for key %@ is %@", key, value);     if ([@

Basic knowledge of html (keep for myself)

1. 通常标签 <strong> 替换加粗标签 <b> 来使用, <em> 替换 <i>标签使用. 2. 在 <head>元素中你可以插入脚本(scripts), 样式文件(CSS),及各种meta信息.     可以添加在头部区域的元素标签为: <title>, <style>, <meta>, <link>, <script>, <noscript>, and <b

Selenium Basic Knowledge

Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架.它是一款用于运行端到端功能测试的超强工具.您可以使用多个编程语言编写测试,并且 Selenium 能够在一个或多个浏览器中执行这些测试. 由 Simon Stewart(来自 Google)创建的 WebDriver 是一个具有类似目标的项目.要控制浏览器,需要依赖采用本机支持的独立客户端.WebDriver 仅提供 Java 绑定,并不能支持 Selenium 1 所能支持的那么多浏览器. Selenium 2 具有

C++之Basic knowledge

目录 Ascii Codes Boolean Operations AND OR XOR (Exclusive Or) NOT Numerical Bases Octal numbers (base 8) Hexadecimal numbers (base 16) Binary representations Reference websites Ascii Codes It is a very well-known fact that computers can manage internal

basic knowledge

Position 属性:规定元素的定位类型.即元素脱离文档流的布局,在页面的任意位置显示. ①absolute :绝对定位:脱离文档流的布局,遗留下来的空间由后面的元素填充.定位的起始位置为最近的父元素(postion不为static),否则为Body文档本身. ②relative :相对定位:不脱离文档流的布局,只改变自身的位置,在文档流原先的位置遗留空白区域.定位的起始位置为此元素原先在文档流的位置. ③fixed :固定定位:类似于absolute,但不随着滚动条的移动而改变位置. ④st

NoSql basic knowledge

The big picture to keep in mind first is: There are lots of articles and resources out there: http://blog.sina.com.cn/s/blog_3fe961ae010139u6.html http://old.sebug.net/paper/databases/nosql/Nosql.html http://blog.csdn.net/godfrey90/article/details/67

Network Basic Knowledge

@1: 应用层的常用协议以及对应的端口号: DNS 53/tcp/udp SMTP 25/tcp POP3 110/tcp HTTP 80/tcp HTTPS 443/udp TELNET 23/tcp FTP 20/21/tcp tftp 69/udp IMAP 143/tcp snmp 161/udp snmptrap 162/udp @2:

[Tango] Basic Knowledge

Project Tango类设备能够给开发者在哪些领域带来机会. 室内导航*:室内GPS信号的缺失,使得Project Tango设备会成为室内导航重要应用场景之一.有了它,你就不会在不熟悉的室内商场.机场迷路.三维场景的室内导航,为盲人提供了更大的便利.[ 路径规划算法浅谈] 游戏:虚拟现实游戏和新型交互游戏前景可期.有人指出,Project Tango设备与美国宇航局勇气号探测器并无太大区别.此类设备可以通过扫描现实世界,让信息与虚拟世界相融合,这也使得我们能够随时随地玩虚拟现实或现实增强游

(3)nodejs basic knowledge

1 render传递多值 router.get('/', function(req, res, next) { res.render('index', { homeTitle: 'Hello All', homeDescription:'I gonna to write something' }); <p class="title"><%= homeTitle %></p> <p class="description">