乱七八糟学程序

1、CDATA:

全名:character data

  在标记CDATA下,所有的标记、实体引用都被忽略,而被XML处理程序一视同仁地当做字符数据看待,CDATA的形式如下:

  <![CDATA[文本内容]]>

  CDATA的文本内容中不能出现字符串“]]>”,另外,CDATA不能嵌套。

 

2、非法的 XML 字符必须被替换为实体引用(entity reference)。

  假如在 XML 文档中放置了一个类似 "<" 字符,那么这个文档会产生一个错误,这是因为解析器会把它解释为新元素的开始。因此不能这样写:
  <message>if salary < 1000 then</message>为了避免此类错误,需要把字符 "<" 替换为实体引用,就像这样:
  <message>if salary &lt; 1000 then</message>
  在 XML 中有 5 个预定义的实体引用:
  
&lt;<小于号
&gt;>大于号
&amp;&与(和)号
&apos;'单引号
""双引号

 注释:严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。

 

 


if (!("a" in window)) {
    var a = 1;
}
alert (a);


var a = 1,
    b = function a (x) {
        x && a (--x);
    };
alert (a);


function a (x) {
    return x * 2;
}
var a;
alert (a);


function b (x, y, a) {
    arguments[2] = 10;
    alert (a);
}
b(1, 2, 3);


 
function a () {
    alert (this);
}
a.call (null);

 

 

第一题:if (!("a" in window)) {
    var a = 1;
}
alert (a);
分析:首先会解析所有函数,其次是var声明的变量,但是不会赋值(明白?)。因为javascript没有块的概念。像for(var i in array)这里的i依然是全局变量。因此,这几行的代码执行顺序是:1.var a;//声明一个变量,但是不会赋值
    2.if语句,全局变量相当于window的属性,所以"a" in window为真,取反为假。故不会执行大括号里面的语句。
    3.alert(a);//undefined

第二题:
     var a = 1,
     b = function a (x) {
        x && a (--x);
    };
    alert (a);
分析:我们可以用多个逗号将变量分开定义,而是用一个var。函数表达式类似于局部变量,不会被全局作用域中访问到。
执行顺序:
    1.声明两个变量var a,b;并给他们赋值a=1,b=function a(){...};这里的function a是局部变量,外部无法访问到。因此全局a还是1.
    2.alert(a);//1

第三题:function a (x) {
           return x * 2;
        }
       var a;
       alert (a);
分析:js永远是先解析声明式函数,再解析变量。
执行顺序:
     1.解析函数a;
     2.声明变量var a;因为a此时没有被赋值,所以它还是指向原来的值。即function a;
     3.alert(a);//不言而预。

第四题:function b (x, y, a) {
          arguments[2] = 10;
          alert (a);
       }
       b(1, 2, 3);
分析:在函数内部可以引用一个对象,它是arguments类似数组,但不是数组。它代表了函数实际接收参数的集合。可以通过下标对相应参数进行访问。如果修改此对象某些属性,如arguments[index],则被传进来的第index(如果有的话,下标从0开始)变量的值也会被修改。
执行顺序:1.声明一个函数b;
          2.执行函数b(1,2,3);因为这里arguments[2]与变量a引用的是一个值,所以当arguments[2]改变时,a也随之改变。

第五题:function a () {
          alert (this);
       }
a.call (null);
分析:call方法接受多个参数,其作用是借用别人的方法当作自己的方法。这样能保证执行的时候this能够指向自己。call方法的第二个参数到最后一个参数是传给借用过来函数的。第一个参数是借用的对象,如果这个对象为空,那么将会作为全局window对象调用。即函数中的this指向window。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值