/**
@author: sinux
@Date: 2013/9/3
@Content: javascript入门(一)
*
**/
一.基础
0.使用变量前不必声明,这是一件有趣的事情。
1.变量是弱类型的,只有var来定义变量,无特定数据类型的声明。
2.每行结尾分号可有可无,建议保持良好习惯,加上分号。
3.变量首字符为字母下划线或$符号,余下是与数字的任意组合。
4.Camel标记法、Pascal标记法、匈牙利类型标记法各有特点,推荐使用匈牙利类型标记法,可以直观看到变量的类型。
具体参考:
Camel 标记法:首字母是小写的,接下来的单词都以大写字母开头
Pascal 标记法:首字母是大写的,接下来的单词都以大写字母开头
匈牙利标记法:在以Pascal标记法的变量前附加小写序列说明该变量的类型
5.关键字(省略)、保留字(概览,主要不要将保留字用作函数名称或者变量名,除非浏览器实现了该保留字,否则没有任何提示错误,但一旦实现,那就必然出错~~~)
6.原始值与引用值
    原始值:数据相对固定,空间不大的,直接存储在变量访问位置的值,成为原始值(一般存储在栈中)。
    引用值:不难理解,与原始值相对的,变量访问的位置存放的不是原始值而是指向原始值的指针~(一般存储在堆中)
7.原始类型
javascript中有以下五种原始类型:primitivetype,null,boolean.number,string,可以运用typeof来获得某一数据的原始类型。如:alert(typeof 95);//output:Number
实际上typeof将有以下几个返回值:
“undefined”,如果变量声明未初始化,则会如此
“number”,“boolean”,”string”不必 赘述
“object”,变量是引用类型或NULL类型(可以理解为NULL是对象的占位符)
8.undefined类型的值只有undefined一个值,也就是说:
var test;
alert(test==undefined);
//将输出”true”
9.null类型唯一字面值为null,undefined由NULL派生,二者相等:
alert(null==undefined);//output为”true“
10.Boolean及Number、String类型不再赘述
11.比较有意思的是NaN(short for “Not a Number”),不能用于算数运算,且与自身不等:alert(NaN==NaN);//outpput:”false”,因此判断是否为NaN时,推荐使用isNaN()进行判断。
12.类型转换之转换为字符串
    考虑到javascript的boolean/string/number等原始类型实际上是伪对象,具有内部的属性和方法,如”blue”.Length可以表示该字符串的长度。另外如果进行其他类型向字符串类型的转换可以通过伪对象内部的toString()方法,常见的所有原始类型均内置了该方法。
    tips:(1)string类型也内置toString()方法,多不多余我不好说,但应该是由于string也是伪对象吧。
          (2)boolean类型的数据转换为字符串时是转换为true或false
          (3)Number利用toString()转换有两种模式:
               默认模式:返回数字的十进制表示。如:var iNum=10.01;alert(iNum.toString());//outputs “10.01”
               基模式:通过内置参数(进制基数),决定返回何种进制形式的字符串表示。如:var iNum=10;alert(iNum.toString(2));outputs “1010”
13.类型转换之转换为数字
          parseInt()与parseFloat()这两种方法提供了针对String类型数据转换为数字的方法。其主要原理是从头开始扫描字符串,直到找到非有效字符停止扫描并进而进行处理将对应字符串以十进制的形式输出或返回。若首字符即为非有效字符,则返回NaN。parseInt()有默认模式和基模式,parseFloat()只有默认模式。
14.强制类型转换的语法与C一样。
    Tips:(1)boolean()当转换的是非空字符串、非零数字或非undefined,NULL对象时返回true。其他情况返回false.
          (2)Number() 针对boolean类型的变量可以进行0和1的转换,null->0,非有效数字则返回NaN。
          (3)String() 最简单,”原样“输出咯
15.一个小问题
    var oTestBoolean=new Boolean(false);
    alert(oTestBoolean&&true);
    返回什么呢?false?错了,是true!想想为什么啊?boolean的强制类型转换,思考一下!!
16.Number类除了继承自Object类的几个方法外还有几个处理数值的专用方法:
toFixed(),参数为一整数,表示几个位小数表示
toExponential()参数也为一整数,表示在以科学记数法表示时保留的小数位数
toPrecision()参数也为一整数,表示输出的表示形式数字总数,该方法将根据该数值选择最有意义的形式将数字进行显示。
17.Stirng类的常用属性:Length,表示该字符串的长度。
常用方法:  0.charAt(index),返回指定位置处的字符;
            1.charCodeAt(Index)返回指定位置处字符的编码(ASCII码)。
            2.concat(),在不改变被连接字符串的前提下进行将连接字符串连在被连接字符串的末尾,得到一个新串。不过觉得没有”+”更简单和直观。
            3.indexOf(),lastIndexOf(),查询子串在该字符串的位置,无则为-1.
            4.localeCompare(),其返回值与C中的strcmp()类似,不再赘述。
            5.slice(),subString(),获取子串,具体用法查询对应API
            6.大小写转化神马的,都与java中的String类类似
18.常见运算符:
        0.单加、单减:单加对数字无意义,但若加在字符串前,可使其转换为数字。单减就是取负值咯。
        1.++/–与C和java中类似
         2.位运算符(默认带符号右移即右移后左边的空位由符号位填充,所以无符号右移用三个大于号即>>>)
        3.逻辑运算符 不做赘述,不过注意的一点是如果参与运算的不都是逻辑值,那么返回的也不一定是逻辑值,可能是对象或者undefined,NaN甚至于出错
        4.其他算数运算符 与java类似,不再赘述
        5.关系运算符  不再赘述
        6.其他运算符 与java类似,不再赘述
19.语句
       大致看了一遍,其中很大部分都是与java相同的,只对一些特殊之处进行记录:
       0.标签与break和continue的联合使用。相当于糅合了goto语句。
       label:
       for()
       {  for()
       {
       if(“)
          break label1;
          if(“)
          continue label1;
       }
       }
       从上面的例子可以看出标签在这里的作用是可以帮助实现多层循环跳转。
       1.with语句  用于设置代码在特定对象的作用域。如:
       with(expression) statement;
       如:
       var sMsg=”test”;
       with(sMsg){
       alert(toUpperCase();
       }
       这个例子可以有助于With语句的理解。

版权声明:本文为sinux原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/sinux/p/3300024.html