javascript的执行原理

JavaScript021

javascript的执行原理,第1张

1、客户端请求某个网页,即我们在上网时在地址栏中输入某个网址,浏览器接收到网址之后,向远程web服务器提出请求2、web服务器响应请求,web服务器找到请求的页面,并将整个页面包含javascript的脚本代码作为相应内容,发送回客户端机器3、客户端浏览器解释并执行带脚本的代码,客户端浏览器打开回应的网页文件内容,从上往下逐行读取并显示其中的html或者脚本代码,脚本是从服务器端下载到客户端,然后在客户端进行的,即不占用服务器端的资源,因此通过客户端脚本,客户端分担了服务器的的任务,大大的减轻了服务器的压力,从而间接地提升了服务器的性能

其实不要被“函数表达式”的函数两字束缚了,其实就是“表达式”,这样一来就会好理解了。在表达式的前面加个逻辑运算符(比如!取反)或数学运算符(比如+),js就会认为你是要获取表达式的值,这样它就会去运行这个表达式,这样函数就会被执行了。比如说有下面这个函数声明:

function abc(){return true}

那么执行 !abc() 时js就会先去调用abc函数,然后再把返回值取反,这个好理解吧?

而现在把abc直接替换为匿名函数:

!function(){return true}()

js也一样会把!后面的部分当作一个表达式去运行,然后把取回的值进行取反,这个过程中匿名函数就会自动运行了。

其实 (function(){})()和 (function(){}()能够自执行的原理也是一样的,我加黑的那对括号其实也是运算符(就好比小学数学中的 (2+3)×4 中的括号),这样js就会把括号里的部分当作表达式来处理了。

所以,说到底函数的自执行其实并不是js的有意为之,而是一种无心插柳的行为,说是旁门左道也不为过,但它确实可以帮我们实现一些特殊的要求,所以就慢慢变成一种正经用法了。

为什么同一个问题 问2遍…………

1 先说apply

apply方法:

语法:apply([thisObj[,argArray]])

定义:应用某一对象的一个方法,用另一个对象替换当前对象。

即:

Function.apply(obj,args)方法能接收两个参数

obj:这个对象将代替Function类里this对象

args:这个是数组,它将作为参数传给Function(args-->arguments)

就是B里的a=4,代替了A里的a=1,

数组[3],就是下面2中说的参数b

2 再来看程序

A.add=function(b){

console.log(this.a + b)

}

这句的意思是指 将结构体A内部的元素(this.a) 与add方法的参数b相加 并输出

输出结果在控制器里可以看到

3 所以三者结合成最后一段代码就是 4+3了

嘛 其实我觉得程序备注里说的挺明白的

我把程序改了下 多加了几个输出,应该会让你容易懂