JavaScript学习笔记一

               JavaScript 学习笔记----基础知识篇(第五章)
              
(一) 变量作用域
未用var 声明的的变量默认作用域是全局变量。即便在方法中声明的也是如此。
与C,C++,Java不同,JS没有块级作用域,即函数中声明的所有变量,无论在哪里声明的,在整个函数中他们都是有定义的。
如:
     var scope=”global”;
     function f()
     {
        alert(scope);
        var scope =”local”;
        alert(scope);
      }
      f();
(二) == 与 ===运算符
(1) 下面的规则用于判断==运算符比较的两个值是否相等。
     ---如果两个值具有相同的类型,那么就检测他们的等同性。如果这两个值完全相同,他们就相等。如果他们不相同,则他们不相等。
             ---如果两个的类型不同,他们仍可能相等。
               ——如果一个是null,另一个是undefined,则相等。
               ——如果一个是数字,另个值是字符串,把字符串转化为数字,再用转换
                   的值进行比较。
               ——如果一个是true,将它转化为1再进行比较;如果一个是false,将它
                   转化为0再进行比较。
               ——如果一个值是对象,另一个值是数字或字符串,将对象转化为原始类
                   型的值,再进行比较。可以使用对象的toString方法或valueOf方法把对象转化为原始类型的值。JS核心语言的内部类通常先尝试valueOf转换,再尝试toString转换,但是对于Date类,则先执行toString转换。不属于JavaScript核心语言的对象则可以采用JavaScript实现定义的方式把自身转换成原始数值。
(2) 下面的规则用于判断===运算符比较的两个值是否相等。
1. 如果两个值的类型不同他们就不同。
2. 如果两个值的类型是数字,而且值相同,那么除非其中一个或两个都是NaN,否则他们是相同的。值NaN永远不会与其他任何值相同,包括它自身。要检测一个值是否是NaN,可以使用全局函数isNaN()。
3. 如果两个值都是字符串,而且在串中同一个位置的字符完全相同,那么他们就完全相同。如果字符的长度或内容不同,他们就不相同。注意:在某些情况下,Unicode标准允许用多种方法对同样的字符串进行编码。但是,从效率方面考虑,JavaScript字符串的比较操作严格的逐个字符进行比较,而且它假定在进行比较之前,所有的字符串已经被转换成了范式。
4. 如果两个值都是布尔值True 或False,那么他们就相同
5. 如果两个值引用的是同一个对象、数组、函数,那么它们就完全等同。
6. 如果两个值都是null 或者都是undefined,他们完全相同。
(三) in 运算符
in运算符要求其左边的运算数是个字符串,或可以被转换成字符串,右边的运算数是一个对象或数组。如果该运算符左边的值是其右边对象的一个属性名,它返回true。
例如:  var point={x:1,y:1};
        var has_x_coord = “x” in point; //Evaluates to true;
        var has_z_coord = ”z” in point; //Evaluatees to false;
(四) typeof 运算符
typeof运算符是个一元运算符,放在一个运算数之前,这个运算数可以是任意类型的。它的返回值是个字符串,该字符串说明了运算数的类型。
如果typeof的运算数是数字,字符串或者布尔值,它返回的结果就是“number”,“string”,“boolean”,对于对象、数组或者null它返回“object”。对于函数它返回的是“function”
(五) switch 语句
case表达式不需要是整数或整数类型,case后面可以跟任意的表达式
switch(typeof x){
case ”number”:
    return x.toString(16);
case “string”:
    return ‘”’+x+’”’;
case ‘boolean’:
    return x.toString().toUpperCase();
default:
    return x.toString();
}

你可能感兴趣的:(JavaScript,F#)