最近接触到JS的知识,在网上搜集了一些前辈们总结的资料,以供后面学习参考。
1、javascript语法
a、javascript的变量名、函数、运算符是区分大小写的
b、变量是弱类型的,ECMAScript不像Java,C++。ECMAScript中的变量无特定的类型。定义变量用var。
c、每行结尾的“;”可以有也可以没有
d、javascript注释是"/*js content */"
2、javascript变量
a、javascipt中定义变量是:var test="hello js";(其中var 是 variable的缩写。)并且给test变量初始值为“hello js”
b、ECMAjavascipt中定义变量可以不初始化。如:var test;
c、javascipt的变量是弱类型的,所以变量可以存储不同类型的值。如:var test="hello js"; test=123;
d、变量名规则:第一个字符必须是字母、下划线、或者是美无符号($)
e、变量名的命名规则
》Camel标记法--首字母小写的,接下来的单词都以大写字母开头
例:var myTestValue; var myResult;
》Pascal标记法--首字母是大写的,接下来的单词都以大写字母开头
例:var MyTestValue; var MyResult;
》匈牙利标记法--在以Pascal标记法的基础上,在变量前面添加一个小写字母说明该变量的类型。
例:var iMyTestValue =55; var sMyResult="Hello js";
3、原始值,引用值(参考http://fehacker.com/2014/12/19/call-by-sharing/提供的讲解)
a、原始值
比如Undefined,Null,Boolean,Number,String。存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。这是因为这些原始类型占据的空间是固定的,所以可将他们存储在较小的内存区域 - 栈中。这样存储便于迅速查寻变量的值。
b、引用值
也就是对象类型 Object type,比如Object,Array,Function,Date等。存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存地址。这是因为:引用值的大小会改变,所以不能把它放在栈中,否则会降低变量查寻的速度。相反,放在变量的栈空间中的值是该对象存储在堆中的地址。地址的大小是固定的,所以把它存储在栈中对变量性能无任何负面影响。
4、几个重要的原始类型
a、Undefined 类型
此类型只有一个值即:undefined。当声明变量未初始化时,该变量的值为undefined。
即:var test;alert(test);则输出undefined。
注意:值undefined并不同于未定义的值。但是:typeof运算符并不真正的区分这两种值请关注以下代码:
var oTemp;
alert(typeof oTemp); 输出 “undefined”;
alert(typeof oTemp2); /*没有任何地方定义oTemp2*/ 输出"undefined";
但是在没有定义变量的情况下却不可以这样使用:alert(oTemp2 == undefined);//这会产生一个错误:变量未定义
当函数没有明确返回值,那么这个函数的返回值默认为:undefined。
b、Null类型
Null类型也只有一个专用值null,值undefined其实是从null派生来的,因此:
alert(null == undefined); //输出true
此二值虽然相等,但是其含义并不相同。undefined是声明了变量,但对其初始化时并未给该变量赋值;null则用于表示尚未存在的对象。如果函数的返回值为对象,那么当找不着对象时则返回的通常是null。
c、Boolean类型
Boolean类型有两个值true/false。
在类型转换过程中:空字符串 == false;数字 0==false ;非零数字和非空字符串== true;
默认情况下:"null==true/false"均返回false,"undefined==true/false"也返回false
var oFalseObject = new Boolean(false);
var result = oFalseObject && true;//此处最终结果是 true,因为此处and 操作会自动将oFalseObject对象转换为true,而不是取此对象的值。所以此处返回值是true;
强类型转换时:var b = new Boolean(null); 则b的最终结果是false; var b = new Boolean(undefined);亦然
5、函数
函数是一组随时随地可以运行的语句,由关键字function、一组参数、以及置于括号内的代码组成的。
如果函数未使用return 语句或者使用了空的return;语句那么此函数的返回值是undefined.
在ECMAScript中函数是不可以重载的,如果在同一区域有两个函数使用了相同的名称,不会引发错误,但是当代码执行的时候真正使用的是第二个函数。
arguments对象:代函数代码中,可以使用特殊对象,开发者不用明确指出此参数名,就能访问他们。arguments便是整个函数的所有参数列表数组。
阅读拓展:
http://www.jb51.net/article/21457.htm
http://www.cnblogs.com/huajs/archive/2011/11/05/2237091.html
http://blog.sina.com.cn/s/blog_6fd4b3c10101dpv2.html
http://www.jb51.net/article/47699.htm