JavaScript 语法总结3

1. 数组初始化可以跳着来  var s = [1,2,,,,6]; // 中间省略的元素为undefined 

2. 函数定义表达式:  var f = function(args){ return 0;};  得到的 f 是一个函数直接量而不是函数的返回值.

3. 访问对象的属性可以使用  .  和 [ ] , 但是只有后者可以放入一个表达式进行计算.

4. 运算符  in ,  instanceof 和 delete 

  - in : 做操作数是一个字符串(或可转换为字符串的值), 右操作数是一个对象, 如果右侧对象拥有一个名为左操作数值的属性名, 那么表达式返回true.

  - instanceof: 左操作数是一个对象, 右操作数标识对象的类, 如果左侧对象是右侧类的实例, 则表达式返回true.

  - delete: 用来删除对象属性或者数组的元素, 无返回值.

var point = {x:1,y:1};
console.log("x" in point);
console.log("z" in point);
console.log("toString" in point); // 继承来的

var data = [10,13,12,4]; //数组也是对象
console.log("0" in data); //有索引为0
console.log(1 in data); //有索引为1
console.log(4 in data); //没有索引为4


var d = new Date();
console.log(d instanceof Date);
console.log(d instanceof Object);
console.log(d instanceof Number); //false


var obj = {x:1,y:2};
delete obj.x;
console.log("x" in obj); //"false"
obj.y = undefined; 
console.log("y" in obj);//"true", 使用undefined赋值后属性仍然在对象中存在
var array = [1,2,3];
delete array[1];
console.log(1 in array); //"false"
console.log(array[1]);//"undefined",访问删除的属性返回 undefined

5. void运算符, 常用在  <a href="javascript:void window.open();"> , 是一个一元运算符, 出现在操作数之前, 操作数可以返回任意类型, 操作数会照常计算, 但忽略计算结果并返回undefined.

6. 函数的声明提前.

  - 函数定义语句中的函数被显式地提前到来脚本或者函数的顶部(嵌套函数提前的外层函数的顶部), 因此他们在整个脚本和函数内是可见的, 如果使用var的话, 只有变量声明提前了, 而变量的初始化代码仍然在原来的位置, 而使用函数声明语句后, 函数的名称和函数体均提前了.

  - 如果函数中用到全局变量, 但是这个变量又在函数定义之后会出现什么情况呢?  -- 还是能正常引用, 因为函数体并没有执行.

7. with语句

  - with语句:  with(object) statement;  将object添加到作用域链的头部,然后执行statement, 最后把作用域链恢复.在严格模式中是禁止使用with语句的, 非严格模式也不推荐使用,因为难于优化.

with(document.forms[0]){ //使得可以直接访问表单,下面的name等都是表单的属性
    name.value = "";
    address.value = "";
    email.value = "";
}
原文地址:https://www.cnblogs.com/roger9567/p/5028964.html