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 保留字

保留词

breakdeletefunctionreturntypeof
casedoifswitchvar
catchelseinthisvoid
continuefalseinstanceofthrowwhile
debuggerfinallynewtruewith
defaultfornulltry 

 

为将来保留的词
abstractdoublegotonativestatic
booleanenumimplementspackagesuper
byteexportimportprivatesynchronized
charextendsintprotectedthrows
classfinalinterfacepublictransient
constfloatlongshortvolatile

 

当选择标识符时避免使用已经在内部 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;

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值