一、变量声明
如果在 var 语句中没有初始化变量,变量自动取 JScript 值 undefined。尽管并不安全,但声明语句中忽略 var 关键字是合法的 JScript 语法。这时,JScript 解释器给予变量全局范围的可见度。当在过程级中声明一个变量时,它不能用于全局范围;这种情况下,变量声明必须用 var 关键字。
当要声明一个变量并进行初始化,但又不想指定任何特殊值,可以赋值为 JScript 值 null。
在 JScript 中 null 和 undefined 的主要区别是 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 对象或函数中使用的词,如 String 或 parseInt。
七、使用构造函数来创建对象
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;