javascript学习笔记

一、 JS的简介

     JavaScript是一种网页编程技术,经常用于创建动态交互网页

     JavaScript是一种基于对象和事件驱动的解释性脚本语言,类似C语言和Java的语法

     事先不编译;逐行执行;无需进行严格的变量声明;内置大量现成对象,编写少量程序可以完成目标

     不同的浏览器甚至同一浏览器的不同版本对JavaScript的支持程度都不一样

二、 JS的基本语法

    0. 有两种JavaScript写法:

       a. 直接在 html 中嵌入:程序写在 <script>...</script>内。

       b. 调用独立JavaScript文件:在html中写<script src="test1.js"></script>; script不能用空标志。

         JS脚本文件中不需要脚本开始和结束声明,直接写 function 

    1. 在HTML中大小写是不敏感的,但标准的JavaScript是区分大小写的

    2. 分号表示语句结束。有换行,分号允许不加(建议加上,以免错误和歧义) 

       程序忽略缩进:提倡加上空格或TAB增强程序可读性

    3. 标识符:成份是 不以数字开头的字母、数字 和下划线(_)、美元符($) 

       ECMA v3标准保留的JavaScript的关键字:

        break  case      catch  continue  default     delete  do     else    false   finally

        for    function  if     in        instanceof  new     null   return  switch  this

        throw  true      try    typeof    var         void    while  with

    4. 变量的声明: var x,y; (变量没类型;未声明的变量也可以用,且是全局的;函数体内声明的变量则是局部的) 

                x=1; y="hello world!";  (变量的类型由所赋的值决定) 

    5. 函数: function 函数名 (参数){ 函数体; return 返回值;} 

       参数没类型或顺序,且可变长;可以使用变量、常量或表达式作为函数调用的参数

       函数由关键字 function 定义; 函数名的定义规则与标识符一致,大小写是敏感的

       返回任意类型(不需写返回类型); 返回值必须使用return 


    6. 数据类型: 

       基本类型: Number:数字、 String:字符串、 Boolean:布尔

       特殊类型: Null:空、     Undefined:未定义

       组合类型: Array:数组、  Object:对象

    7. Number 数值类型:所有数字都采用64位浮点格式存储,相当于Java和C语言中的double格式

       能表示的最大值是 ±1.7976931348623157 x 10^308;能表示的最小值是 ±5 x 10^ -324

       10进制的整数的精确表达的范围是 -9007199254740992 (-2^53) 到 9007199254740992 (2^53) 

       16进制数据前面加上0x,八进制前面加0

    8. String 类型:字符串常量首尾由单引号或双引号括起

       没有字符,只有字符串(所有字符都按字符串处理) 

       常用转义符: \n换行   \'单引号    \“双引号   \\右斜杆  (字符串中部分特殊字符必须加上右划线\) 

       汉字常使用特殊字符写,如: \u4f60 -->"你"  \u597d -->"好" (可避免乱码) 

    9. Boolean 类型:仅有两个值:true和false,实际运算中true=1,false=0

       也可以看作on/off、yes/no、1/0对应true/false;主要用于JavaScript的控制语句

    10.Null、Undefine 类型:

       Null在程序中代表变量没有值;或者不是一个对象

       Undefined代表变量的值尚未指定;或者对象属性根本不存在

       有趣的比较:

          null与空字符串:   不相等,null代表什么也没有,空字符串则代表一个为空的字符串

          null与false :    不相等,但是!null等于true

          null与0     :    不相等,(但是在C++等其他语言中是相等的) 

          null与undefined: 相等,但是null与undefined并不相同

    11.数据类型转换:JavaScript属于松散类型的程序语言

       变量在声明的时候并不需要指定数据类型;变量只有在赋值的时候才会确定数据类型

       表达式中包含不同类型数据则在计算过程中会强制进行类别转换(优先级:布尔-->数字-->字符) 

         数字 + 字符串:数字转换为字符串

         数字 + 布尔值:true转换为1,false转换为0

         字符串 + 布尔值:布尔值转换为字符串true或false

       函数parseInt:强制转换成整数(如果包含字符串,则转换到字符串为止,后面不再理) //如 parseInt("13a2")=13

       函数parseFloat: 强制转换成浮点数

       函数eval:将字符串强制转换为表达式并返回结果

       函数typeof:查询数据当前类型(string / number / boolean / object ) 

    12.运算符:(同java) 

       算术运算符: 加/字符连接(+)、 减/负号(-)、 乘(*) 、除(/)、 余数(% ); 递增(++)、 递减(--) 

       逻辑运算符: 等于( == )、 不等于( != ) 、 大于( > ) 、 小于( < ) ; 大于等于(>=) 、小于等于(<=) 

               与(&&) 、或(||) 、非(!) ;  恒等(===)、不恒等(!==) 

       位运算符:   左移(<<) 、有符号右移(>>);无符号右移(>>>) 

               位与(&) 、位或(|)、异或(^) 、NOT (~) 

       赋值运算符: 赋值(=) 、复合赋值(oP=  如:+=  &=) 

    13.选择控制语句(同java)

       if(...){...} else{...}   if 语句允许不使用else子句;允许进行嵌套

       switch(表达式){case 值1:语句1;break;  case 值2:语句2;break;  default:语句3;}

    14.循环控制语句(大体同java) 

       for (初始化;条件;增量){ 语句1; ... } 

        for-each遍历:for(var 下标 in 数组){ 语句; } //java用":"代替"in"

       while (条件){ 语句1; ... } 


    15.对象:JavaScript是一种基于对象语言,对象是JavaScript中最重要的元素

       对象由属性和方法封装而成

       avaScript包含四种对象:

          内置对象 DATE

          自定义对象 Cart

          浏览器对象 WIndow

          ActiveX对象 ActionXObject


三、 JS的内置对象

    11种内置对象:Array, Boolean, Date, Math, Number , String

              Error, Function, Global , Object, RegExp

       在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象

       可以用创建对象的方法定义变量;  String、Math、Array、Date、RegExp是JavaScript中常用的对象

    内置对象的分类:

       数据对象: Number数据对象; String字符串对象; Boolean布尔值对象

       组合对象: Array数组对象;  Math数学对象; Date日期对象

       高级对象: Object自定义对象;Error错误对象;Function函数对象; RegExp正则表达式对象;Global全局对象

    自动创建对象:调用字符串的对象属性或方法时自动创建对象,用完就丢弃。 如: var str1="hello world";

    手工创建对象:采用new创建字符串对象str1,全局有效。 如:var str1= new String("hello word");


    1. String 字符串对象:

       格式编排:anchor()锚、blink()闪烁、fixed()固定、bold()粗体、italics()斜体、strike()删除线

               big()字变大、small()字变小、sub()下标、sup()上标;

               fontcolor(color)字体颜色、fontsize(size)字体大小、link(url)超链接

       大小写转换:  toLowerCase()返回小写字符串、toUpperCase()返回大写字符串

       获取指定字符:charAt(index)返回指定位置字符、charCodeAt(index)返回指定位置字符Unicode编码

           用法:str1.bold();//字体变粗;相当于“<b>str1</b>“   str1.anchor(); //把str1标识为锚 

       子字符串处理:

           截取:str1.substr(start,length);  //返回从索引位置start开始长为length的子字符串

               str1.substring(start,end);  //返回start开始end结束的子字符串,不包括最后的一个

               str1.slice(start,end);      //同substring,但允许使用负数表示从后计算位置,不包括最后的一个

           替换:str1.replace(findstr,tostr); //返回替换finstr为tostr之后的字符串

           分割:str1.split(bystr);     //返回由bystr分割成的字符串数组(通常bystr是连接符号,如逗号或横杆) 

           连接:str1.concat(string2);      //返回 str1 与 string2 连接后的字符串

       查询字符串: indexOf(findstr,index)返回正向的索引位置、lastIndexOf(findstr)返回反向的索引位置

                 match(regexp)返回匹配的字符串、search(regexp)返回找到字符串的首字符索引 

       用法:

         str1.indexOf(findstr,index);//查找字符串findstr;从index位置开始的索引,省略index则从0开始找;↓

         str1.lastIndexOf(findstr);  //从后面找起;返回findstr在str1中出现的首字符位置下标,没有找到返回-1

         str1.match(regexp);   //regexp代表正则表达式或字符串;返回匹配字符串的数组,如果没有匹配则返回null

         str1.search(regexp);  //返回匹配字符串的首字符位置下标;作用同indexOf方法,但可写正则表达式

         str1.length;          //获取字符串长度;汉字、字母长度均为1;返回大于或等于0的整数

    2. Array 数组对象:

         x.length;             //获取数组元素的个数;返回大于或等于0的整数

       连接数组: (原数组不变) 

         x.join(bystr);        //把数组的各元素由bystr连接起来作为字符串;与字符串的split功能刚好相反

         x.toString();         //返回由逗号(,)连接数组元素组成的字符串

           document.write(v.toString());document.write(v);  //这两句效果一样

         v = x.concat(元素, ...);  //把元素添加到数组尾端后,返回另一数组

       数组排序: (返回排序后的数组;改变原数组) 

         x.reverse();          //按原顺序倒着排序

         x.sort();             //按字典顺序排序

       获取子数组: (返回被删/被截取的元素数组) 

         x.slice(start,end);   //从start下标开始,截取到end;返回被截取的元素数组;不改变原数组

           //start和end可用负数表倒数(-1代表最后一个元素);end<start时不截取;忽略end,截取start后的所有元素

         x.splice(start,n,value, ...);  //从start下标开始删除n个,再插入value(可理解为替换);改变原数组

           //start为负数时表倒数;n<1表不删除;可忽略value(不插入);可忽略n,表删除后面所有;返回被删元素数组

    3. 栈:(数组的基础; 改变原数组) 

       v.pop(); //删最后的一个元素;返回删除的元素

       v.push(元素, ...);       //添加元素到最后位置;返回数组长度 

       v.unshift(元素, ...);    //添加元素到最前位置(多个参数,则按参数顺序同时插入);返回数组长度 

       v.shift();  //删最前的一个元素;返回被删除的元素

    4. Math 数学对象:

       都是数学常数:(可直接用) 

       Math.E (自然数)        Math.LN2 (ln2)     Math.LN10 (ln10)         Math.LOG2E (log 2e)

       Math.LOG10E (log e)   Math.PI (圆周率)    Math.SQRT1_2 (根号1/2)    Math.SQRT2 (根号2)

       三角函数:

          Math.sin(x)        计算正弦值; (x在0~2π之间,返回值-1~1) 

          Math.cos(x)        计算余弦值; (x在0~2π之间,返回值-1~1) 

          Math.tan(x)        计算正切值; (x在0~2π之间,返回正切值) 

       反三角函数:

          Math.asin(x)       计算反正弦值;(x在 -1与1之间,返回0~2π) 

          Math.acos(x)       计算反余弦值;(x在 -1与1之间,返回0~2π) 

          Math.atan(x)       计算反正切值;(x可以为任意值,返回 -π/2 ~π/2) 

          Math.atan2(y,x)    计算从X轴到一个点的角度;(y,x分别为点的纵坐标和横坐标,返回-π ~π) 

       计算函数:

          Math.sqrt(x)       计算平方根 

          Math.pow(x,y)           计算x^y

          Math.exp(x)        计算e的指数 e^x

          Math.log(x)        计算自然对数 (x为大于0的整数) 

       数值比较函数:

          Math.abs(x)        计算绝对值

          Math.max(x,y,...)  返回参数中最大的一个

          Math.min(x,y,...)  返回参数中最小的一个

        * Math.random( )     计算0~1之间的一个随机数

          Math.round(x)      舍入为最接近的整数(四舍五入,负数时五舍六入) 

        * Math.floor(x)      对一个数下舍入 (结果不大于x;正数时直接舍去小数,负数时 -1.1==-2 ) 

          Math.ceil(x)       对一个数上舍入 (结果大于x) 

    5. Date 时间对象:

       创建日期对象:

         a.不指定参数时:  var nowd1=new Date();document.write(nowd1.toLocaleString( ));

           //显示当前时间,如:2008年11月24日 星期一 19时23分21秒 

           //不用"toLocaleString()"则显示: Mon Nov 24 2008 19:23:21 GMT+0800 (CST)

         b.参数为日期字符串: var nowd2=new Date("2008/3/20 11:12");alert(nowd2.toLocaleString());

           //显示: 2008年03月20日 星期六 11时12分00秒

           var nowd3=new Date("08/03/20 11:12");alert(nowd3.toLocaleString( ));

           //显示: 1920年08月03日 星期六 11时12分00秒    //按 月、日、年 的顺序

         c.参数为毫秒数:  var nowd3=new Date(5000); alert(nowd3.toLocaleString( ));

           //显示: 1970年01月01日 星期四 08时00分05秒 //显示本国的时间 

           alert(nowd3.toUTCString()); //显示西方的时间: Thu, 01 Jan 1970 00:00:05 GMT  

         d.参数为年月日小时分钟秒毫秒: var nowd4=new Date(2008,10,24,11,12,0,300);

           alert(nowd4.toLocaleString( )); //毫秒并不直接显示;月份参数从0~11,所以这里10对应11月份

           //显示: 2008年11月24日 星期一 11时12分00秒

       获取和设置日期、时间的方法:

           getDate()          setDate(day_of_month)       日期 (1~31) 

           getDay()                                       星期 (1~7;  没set方法) 

           getMonth()         setMonth (month)            月份 (0~11; 别忘加1) 

           getFullYear()      setFullYear (year)          完整年份(-271820~275760) 

           getYear()          setYear(year)               年 (范围同上; 1900年计算为0) 

           getHours()         setHours (hour)             小时 (0~23) 

           getMinutes()       setMinutes (minute)         分钟 (0~59) 

           getSeconds()       setSeconds (second)         秒 (0~59) 

           getMilliseconds()  setMillliseconds (ms)       毫秒(0-999) 

           getTime()          setTime (allms)             累计毫秒数(从1970/1/1 00:00:00开始) 

           注意:set方法对任意整数有效,影响上一级的数;如setDate(-1)设为上个月30号。 但对小数没效。

       日期和时间的转换:

           getTimezoneOffset()  返回本地时间与GMT的时间差,以分钟为单位(中国为-480;差8小时) 

           toUTCString()        返回国际标准时间字符串(默认) 

           toLocalString()      返回本地格式时间字符串

           Date.parse(x)        返回累计毫秒数(从1970/1/1 00:00:00到x的本地时间,忽略秒以下的数字) 

           Date.UTC(x)          返回累计毫秒数(从1970/1/1 00:00:00到x的UTC时间) 不明UTC是什么


你可能感兴趣的:(javascript学习笔记)