javascript笔记

===javascript===
1.javascript
是网景(Netscape)开发的一种与页面进行交互的编程语言.
javascript程序在浏览器端运行.文件以.js为结尾.
Netscape Navigator javascript
         IE        JScript
---引入js:
  内部:使用<script>标签
  外部:
  <script type="text/javascript" src="js文件路径"></script>

2.javascript作用
a.前段验证
b.ajax核心技术之中的一个.
c.与页面进行交互,生成动态效果
d.获得浏览器的相关信息

3.javascript的组成部分:
1)ECMAScript:语法基础(已经标准化)
2)DOM:文档对象模型(部分标准化)
3)BOM:浏览器对象模型(没有标准,可是大部分浏览器都支持window,location,history,screen等).
4.语法基础
1)数据基本类型
number:数字类型
string:字符串类型
boolean:布尔类型
null:空类型
undefined:没有定义类型
注意:
a.undefined:
定义一个变量假设没有赋值,那么这个变量就是undefined.
假设未定义变量,直接使用的类型是undefined
b.null
null类型的值为null.
javasrcipt函数没有返回值,函数的返回值为null.

c.布尔类型
下面几种情况为true
1.字符串,仅仅要不是空字符串
2.数字非0
3.对象

null和undefined为false

d.NaN:Not a number 不是一个数字
但NaN这个值属于number类型
 
2)对象类型
function Object String Math Array Date

java是强数据类型语言:定义变量时,必须定义变量的类型
js弱数据类型的语言:定义变量时,不须确定变量的类型.但数据本身有类型.

---使用变量时,js的特性:
a.javascript同意定义多个重名变量,变量的值以最后的变量赋值为准.
b.javascript同意命令结束后不写";"号(推荐写上)
c.javascript同意定义变量不使用keyword"var",所定义的变量叫做全局变量.
局部变量:指的是函数内部的变量,且使用"var"定义,作用的范围:从定义变量到函数结束.
  
  3)运算符
a.算术运算符 + - * / % ++ -- += *= /= %= 等
假设在进行非"+"操作时,javascript会把字符串(仅仅包括数字)变成数字.
  parseInt()
parseFloat()

b.比較运算符 < > >= <= == ===
==:对照的是数据的值
===:对照数据值的同一时候,比較数据类型

c.逻辑运算符&& || !

d.三目运算符 (a==b)?true:false;

e.赋值运算符  =


4)流程控制语句
1.条件
if ..else

2.循环
do ...  while
while
for(var i=0;i<10;i++)
java: 
for( Object obj:list){}

List<Person> list = new ArrayList<Person>();
list.add().....

for(int i=0;i<list.size();i++){
Person p = list.get(i);
p.getName();
}

for(Person p:list){
p.getName();
}

js:foreach()(之后讲)


---对象数据类型----
1.Function函数 ---->类似java中的方法
java:定义方法
修饰符 返回值类型 方法名(參数列表) 异常表{}
public int add(int i,int j){ return i+j;}

js:函数
a.function add(i,j){ return i+j;}

b.不推荐使用,由于函数体书写不便,可读性不强
var fun = new Function("i","j","return i+j");

c. 匿名函数
var fun = function(i,j){ return i+j;}

注意:
1)js中函数没有重载的概念,函数调用优先变量的定义,之后以最后一次定义为准.(和參数列表无关)
2)函数内部有一个隐藏对象(内置对象)
arguments:函数被调用时所传的參数.
3)函数的參数能够是还有一个函数变量
function fun1(){alert("fun1");}
function fun2(){alert("fun2");}
function fun3(f){alert("fun3");f();}
fun3(fun1);

2.Object 对象
java: Student类 Student s = new Student();
js:没有类的概念
1)通过构造函数创建对象
var student = new Object();
student.name = "jack";
student.age = 25;
student.getName = function(){return this.name;}
2)JSON方式创建对象(JSON以后讲)
var student = {
name:"rose",
age:18,
getName:function(){
return this.name;
}
};
3.Array数组
1).通过构造器来创建
var arr = new Array();
java中数组特点:
int[] arr= new int[10];
a.长度不可变
b.一种类型的数组仅仅能存储同种类型的数据

js中数组的特点:
a.长度可变
b.能够存储随意类型的数据

2).JSON方式创建数组
var arr = [1,2,"abc",new Object()];


3).数组经常使用的API:
length:属性,返回数组长度.
toString():返回数组的字符串表示
concat():用于连接两个数组,返回一个新的数组
join(";"):用于将数组中的各个元素以";"号连接成字符串
reverse():将数组反转,返回一个原数组,没有形成新的数组
slice(m,n):用于截取数组的一部分([m,n)),并以数组的形式返回


数组作为堆栈使用
push():压入
pop():弹出


数组作为队列使用
shift():删除并返回数组的第一个元素
unshift() 方法可向数组的开头加入一个或很多其它元素,并返回新的长度。


数组排序:
sort():以字符串方式比較

数字排序:
arr.sort(function(a,b){
//return a-b;//升序
return b-a;//降序
});


字符串长度排序:
arr12.sort(function(a,b){
return a.length - b.length;//升序
return b.length - a.length;//降序
});
4.String
java : String s = new String("jack");
js:   var s = new String("jack");
var s = "jack";


经常使用API:
length属性:返回字符串长度(java中str.length())
charAt(index):返回指定位置的字符
substring(from,to):返回子字符串(区间左闭右开)
indexOf(str):指定字符串在原字符串中第一次出现的位置,找不到返回-1.
match(regexp):返回匹配指定正則表達式的字符串,返回的结果是一个数组.
var s1 = "aa12bb12223ccdd14";
var reg = /[0-9]+/g;//g :global搜索全局
var arr = s1.match(reg);


var tel = "+86 18670338142";
var reg1 = /^(\+\d{2}\s)?\d{11}$/;
reg1.test(tel):推断字符串tel是否是依照正則表達式的规范

replace(reg,""):替换符合正則表達式的字符串
toLowerCase()/toUpperCase():返回小写/大写形式


search(reg):返回依照正則表達式检索到的字符串位置(仅仅检查一次)


split(","):以","切割字符串,返回数组

5.Date日期
java: java.util.Date;
java.sql.Date;
Date date = new java.util.Date();
ps.setDate(1,new java.sql.Date(date.getTime()));
js:
1)var d = new Date();
toLocaleString():依照当前国家显示日期的习惯来显示日期


2010 10 1 13:15
2.显示特点某天日期
var l = Date.UTC(2010,9,1,5,15);
var d = new Date(l);


3.经常使用API
getYear(): 距离1900年相差多少年
getFullYear(): 实际年份
getMonth():月份(从0開始)
getTime():距离1970年的毫秒数
getDay():星期几
getDate():当月的几号
getHours(): 时
getMinutes(): 分
getSeconds(): 秒


6.Math
处理算术运算
Math.round():四舍五入
Math.ceil():对于小数,向上升值
Math.floor():截取小数数据(取整数有效位,向下取整)
Math.random():0到1之间的随机数
例: 0到17之间的随机数
Math.floor(Math.random()*18)
1到17
Math.ceil(Math.random()*17)或
Math.floor(Math.random()*17+1)
----foreach循环---
java: List<User> list = new ArrayList<User>();
for(User u:list){}
js:
1.遍历数组
for(idx in arr){//迭代数组的下标值
alert(idx+":"+arr[idx]);
}


2.遍历对象的属性
for(prop in student){//prop迭代对象的属性名
alert(prop+":"+student[prop]);
}
7.事件监听属性
1)一般性事件
差点儿适用所有的可显示标签
onclick:单击
ondblclick:双击
onmouseover:鼠标移上元素
onmouseout:鼠标移出元素
onmousemove:鼠标移动
onmousedown:鼠标左键按下
onmouseup:鼠标左键松开
2)页面相关事件 body标签中
onload:页面载入之后触发
onscroll:页面滚动时触发
onresize():调整大小


3)表单相关事件
onblur:当前元素失去焦点时触发
onchange:用户改变域的内容
onfocus:元素获得焦点时触发
onsubmit:提交button别点击时触发(<form>)
return true|false:为true就提交表单.反之则不提交

你可能感兴趣的:(JavaScript)