JS容易被忽略的小知识点

1、JS是最后加载的,所以最好写在body标签的最后。

2、不想要a标签发送请求,在href中加上javascript::;或者javascript:void(0); 前者淘宝使用,后者百度使用。

3、conslole.dir()查看一个数组或者一个对象中的内容和属性。

4、一次性定义多个变量var name,age,sex;一次性为多一个变量赋同样的值 name = age = sex  = 29;

5、 变量定义但是没有赋值该值为undefined。

6、“+”执行字符串和数字进行运算时执行的为连接操作。除了+,字符串和数字进行运算时执行的为连接操作。如果字面为非数字进行算术运算,结果是NAN(not is number)。

7、逻辑运算符的结果为boolean类型的值该类型的值只有两个true,false,可以表示false的值:  false , null , 0 ,NAN ,undefined ,’’其他的都可以表示为true。 如果是非boolean类型的值参与逻辑运算该值会被自动转换为boolean类型的值进行运算,但是结果为该值自身.

8、当函数的实际参数多于形式参数的时候,会自动生成arguments伪数组,arguments的属性:length:实际参数的个数callee:代表当前函数体.用法经常在递归操作中使用.. 因为当前函数的名字应该,callee代表的函数也改变

9、形式参数比实际产生多, 形式参数的值为 undefined。

10、没有返回值额函数的返回值是undefined.函数的返回值可以是一个一个函数。

11、局部变量:使用var定义在函数内的变量称为局部变量.局部变量不能够在函数外部访问.

    全局变量: 可以在函数外或者是函数内访问.

     1. 在函数外定义的变量都是全局变量.

     2. 在函数内部使用var定义的变量也是变量

     3. 可以通过window对象在任意位置定义全局变量.(实际上全局变量作为在window对象的属性存在,定义的函数也被作为window对象的属性.)

     //如何判断一个全局变量是否存在?

     if(window.变量名 === undefined){

console.debug('没有定义');

}

12、Javascript的预编译和执行(Javascript源代码加载到浏览器的内存后做了什么?

    1. 先对javascript源代码进行预编译

    2. 再从上到下执行

13、全局变量的编译:

    全局变量在编译过程中会被自动声明到script标签的第一行之前.(不会赋值)

   全局变量的执行:

     全局变量在执行时, 在定义的地方为编译期声明的变量初始化.

14、局部变量的编译:

    局部变量在编译过程中会被自动声明到函数体标签的第一行之前.

   局部变量的执行:

局部变量在执行时, 在定义的地方为编译期声明的变量初始化.

15、函数的编译:

    函数在编译过程中会被自动声明到script的第一行之前的之前,最最前面(在变量之前),并且以函数名为变量名字,同时将函数自身赋值给该变量,变量将会覆盖同名的      函数.

  函数的执行:

    函数在script后任何地方调用都可以执行

16、变量的查找:

    当代码执行时会先作用域链上查找该变量. 查找的过程如下?

    1.先在当前函数中查找

    2.依次查找当前函数定义位置之外的代码中是否定义变量.

17、对象的简单操作:

   1.添加属性/方法 语法:

  对象.属性的名字 属性值;

  对象[‘属性名字’] = 属性值;

    2、删除属性 语法:

       delete  对象.属性;

             delete  对象[‘属性名’]

     3.遍历对象成员 语法:

             for(var 字符串的属性名字 in  对象){

                 var 属性值 = 对象[字符串的属性名字];

               }

你可能感兴趣的:(JavaScript)