js 一些你不可忽视的细节

一、变量声明

如果在 var 语句中没有初始化变量,变量自动取 JScript 值 undefined。尽管并不安全,但声明语句中忽略 var 关键字是合法的 JScript 语法。这时,JScript 解释器给予变量全局范围的可见度。当在过程级中声明一个变量时,它不能用于全局范围;这种情况下,变量声明必须用 var 关键字。

 

当要声明一个变量并进行初始化,但又不想指定任何特殊值,可以赋值为 JScript 值 null

 

在 JScript 中 nullundefined 的主要区别是 null 的操作象数字 0,而 undefined 的操作象特殊值NaN (不是一个数字)。对 null 值和 undefined 值作比较总是相等的。

 

二、判断对象 undefined

// 这种方法不起作用

if (x == undefined)

    // 作某些操作

 

// 这个方法同样不起作用- 必须检查

// 字符串 "undefined"

if (typeof(x) == undefined)

    // 作某些操作

 

// 这个方法有效

if (typeof(x) == "undefined")

or

if (typeof(x) === "undefined")

 

三、特殊的内部函数eval

var anExpression = "6 * 9 % 7";

var total = eval(anExpression); // 将变量 total 赋值为 5。

var yetAnotherExpression = "6 * (9 % 7)";

total = eval(yetAnotherExpression) // 将变量 total 赋值为 12。

 

四、Jscript 支持四种类型的对象

       内部对象、生成的对象、宿主给出的对象(如 Internet 浏览器中的 window 和 document)以及 ActiveX 对象(外部组件)。

 

五、构造函数

// pasta 是有四个参数的构造器。
// 第一部分与上面相同。
function pasta(grain, width, shape, hasEgg)
{
    // 用什么粮食做的?
    this.grain = grain;

    // 多宽?(数值)
    this.width = width;     

    // 横截面形状?(字符串)
    this.shape = shape;   

    // 是否加蛋黄?(boolean)
    this.hasEgg = hasEgg;  

    // 这里添加 toString 方法(如下定义)。
    // 注意在函数的名称后没有加圆括号;
    // 这不是一个函数调用,而是
    // 对函数自身的引用。
    this.toString = pastaToString;
}

// 实际的用来显示 past 对象内容的函数。 
function pastaToString()
{
    // 返回对象的属性。

    return "Grain: " + this.grain + "\n" +
        "Width: " + this.width + "\n" +
        "Shape: " + this.shape + "\n" +
        "Egg?: " + Boolean(this.hasEgg);
}

 

六、Jscript 保留字

保留词

break delete function return typeof
case do if switch var
catch else in this void
continue false instanceof throw while
debugger finally new true with
default for null try  

 

为将来保留的词

abstract double goto native static
boolean enum implements package super
byte export import private synchronized
char extends int protected throws
class final interface public transient
const float long short volatile

 

当选择标识符时避免使用已经在内部 Jscript 对象或函数中使用的词,如 StringparseInt

 

七、使用构造函数来创建对象

var myObject = new Object();             // 创建没有属性的通用对象。
var myBirthday = new Date(1961, 5, 10);  // 创建一个 Date 对象。
var myCar = new Car();                   // 创建一个用户定义的对象,并初始化其属性。

 

八、js模拟jQuery trim函数

// String 构造函数的原型对象的一个方法。
String.prototype.trim = function()
{
    // 用正则表达式将前后空格
    // 用空字符串替代。
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

 

九、== 与 === 区别

JScript 是一种具有自动强制的自由类型语言。因此,尽管实际上不同类型的值是不相等的,但对下述示例中的表达式求值都将得到 true。 

 

"100" == 100;

false == 0;

要核对类型与值都一致,用“严格相等”运算符(===)。下面两个表达式的值为 false:

 

"100" === 100;

 

false === 0;

 

 

 

 

 

你可能感兴趣的:(每天进步一点点,学习永无止境,js,纵观千象)