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 属性值 = 对象[字符串的属性名字];
}