胖客户端

瘦客户端是过去时。 随着电脑性能的提升, 胖客户端才是如今的流行色。

胖客户端,主力军是 JavaScript.

1. JavaScript 有个原则:渐进增强 平稳退化

    这是什么意思呢?

    例如:客户提交表单时,有很多选项。你希望有一个全选按钮,点击一下,便全部选上。

    这一功能是依靠 JavaScript 实现的。如果客户端禁用 JavaScript,那么,这个全选按钮,就成了多余的东西。

    渐进增强:就是连这个按钮也用 JavaScript 创建。如果客户端没有禁用 JavaScript,就创建全选按钮,点击,OK!一切正常。

    平稳退化:就是如果客户端禁用 JavaScript,则全选按钮根本不创建。OK!仍然一切正常,只是没有全选功能而已。

2. JavaScript 有个难点:闭包

    何谓闭包?先看代码:

代码
1 var f;
2
3  function MyFunc() {
4 if (f) {
5 f();
6 }
7
8 if (!f) {
9 f =function() {
10 alt(i++);
11 };
12 }
13
14 var i =1;
    f();  //注1
15 alt("MyFunc i = "+ i);
16 }
17
18 MyFunc();
19 MyFunc();

Line-18 执行的显示是:“1”  和  “MyFunc i = 2”;

Line-19 执行的显示是: “2” 、“3” 和 “MyFunc i= 1”;

为什么同一函数,两次执行的显示却不一样呢? 这就是闭包在作怪。

闭包:是个运行时的概念。

因为 f 在,所以 f 执有的匿名函数在。因为匿名函数执有 MyFunc 的变量 i,所以,第一次运行的 MyFunc 也在。

第二次 MyFunc 运行时,f 执有的仍是第一次 MyFunc 运行的变量。所以第二次显示 “MyFunc i = 1”, 表明第二次的 i 与 f 持有的第一次的 i 不是同一个变量。

注1 是理解闭包的关键。

原文地址:https://www.cnblogs.com/china_x01/p/1908321.html