变量
使用关键字var来定义变量,js的变量是弱类型,var不写也可以
var a = 0; a = "abcv"; a = true;a=3.15;
运算符
算术运算符
var a = 3170; b = a/1000*1000;
b = 3170 js是弱类型a/1000 不是等于3
"12"-1 = 11 js会将字符串转换再做运算不是字符串相加减
2%5 = 2;
- js中fase是0或者null,非0非null就是true
- ++问题
var n = 3,m; m = n++; n = 4;m =3;
var n = 3,m; m =++n; n = 4;m =4;
赋值运算符
= += -= /= %
比较运算符
< > == <= <= 运算的结果不是false就是true
逻辑运算符
! && || 用来连接两个Boolean的表达式, &是位运算符
alert(a>3 && b<8); true | false
alert(a > 3 & b < 8);1 | 0
alert(!t); false | true; 非0或非null取反
位运算符
& | ^ >> << >>> <<<
var c = 6;
alert(c&3);2 (相同为真)
110
011
010
alert(5^3^3);5(不同为真)
alert(6>>1);6除于2的1次方=3
alert(6<<2);6x2的2次方 = 24
三元运算符
? : 可以是ifelse的简写形式
其他
1.undefined 未定义,有变量没赋值,其实就是一个常量
xx==undefined
2.获取值的类型,可以通过typeof获取
alert(typeof('a')=='string');//number boolean
语句
顺序结构,从上往下执行
判断结构 if
var t = 1;
if(t == 2); 判断,建议将常量放左边
if (t = 2); 赋值true
选择结构 switch
var a = "bd";
switch(a){
case "cc":
alert("cc");
break;
default:
alert("default")
break;
}
循环结构 while for
while(t < 8) {};
for(var x = 0; x < 3; x++){document.write("a");}
其他 break continue
w:for(var x = 0; x < 3; x++){
for (var y = 0; y < 4; y++) {
doucument.write("a");
continue:w;
}
}
数组 对象类型(object)
1.定义数组两种方式
var arr =[]; var arr = [3,2,4];
var arr = new Array(); new Array(5);new Array(1,2,3,4,5);
2.arr.length 数组长度
3.遍历数组
for (var x = 0; x < arr.length; x++) {
document.write("arr["+x+"]"+ arr[i]);
}
4.特点
- 长度可变
- 元素的类型是任意的。建议使用时存储同一类型的元素
函数
1.函数的格式
function 函数名(参数列表){
函数体;
return 返回值;如果没有返回值页可以省略return
}
函数名();调用
function add(x,y){
return x + y;
}
var a = add(5,6);
2.只要使用了函数的名称,就是对这个函数的调用
3.函数中有一个数组有一个数组对传入的参数进行存储,这个数组就是arguments
4.函数调用没有加括号时,会返回方法定义的字符串
function a(){returen 100;}
var a = a// 会返回function a(){returen 100;}
动态函数
使用的是js中内置的一个对象Function
new Function("x,y","var sum; sum=x+y;return sum;");
add(4,8);
匿名函数
没有名字的函数,通常是函数的简写形式
var add = function(a,b){
return a + b;
}
add(7,8);
变量
变量如果在script内声明变量在整个变量都有用----全局变量
变量在Function里面定义的是局部变量
<scrpit>
for (var x =0;x <3;x++) {}
doucment.write("x="+x);//x = 3 在本页面其他script里x也可以用
</script>
对象
Object
提供所有对象的通用方法。
object.toStrong()所有对象变成字符串对象
object.valueOf()返回指定对象的初始方法
String
1.定义
var str = new String("abc");
var str = "string";
2.常用方法
str.length长度(不是方法是属性没有括号)
str.bold()加粗使用Bhtml标签
str.concat()连接字符串
str.foncolor("red")字体颜色
str.link("http://b.com"); 链接
str.replace()替换
str.substr(1,3) 截取字符串 从哪开始长度
str.substring(1,3)//截取从哪开始到哪结束
3.自定义方法
<script>
function trim(str) {
var start,end;
start = 0;
end = str.length - 1;
while(start <= end && str.charAt(start)==' ') {
start++;
}
while(start <= end && str.charAt(end)==' ') {
end--;
}
return str.substring(start,end+1);
}
var s = " a b c ";
alert(trim(s));
</script>
4.prototype 属性
返回对象原型的引用,用这个属性提供对象的类的一组基本功能,相当于分类
给String的原型中添加一个功能
String.prototype.len = 180;
alert("sdf".len);//180
String.prototype.trim = function(){};//给字符串添加一个方法
str.trim();
Array
1.定义
var arr = ["a","b","c'];
var arr = new Array(3);
var arr = new Array("","","")
2.方法
var arr = ["a","b"];
var arr2 = ["bc","dd"];
//连接数组
arr.concat("ds",arr2);//输出 ["a","b","ds","bc","dd"];
//join返回字符串,元素由指定分隔符分割
arr.join();//输出“a,b” arr.join("-") 输出 “a-b”;
//pop移除最后一个元素并返回该元素
arr.pop();//输出 “b”
//push 添加新元素(元素可以是数组),并返回数组的长度
arr.push("dd");//输出 3
//shift 移除第一个元素,输出被删除元素
arr.shift();//输出“a”
//slice 返回数组的一段
arr.slice(start,end);不包含end元素
//sort 排序
arr.sort();
//splice()删除元素,并可以元素进行替换,返回移除的元素
arr.splice(0,1,“dd”);输出"a", 数组变为 ["dd",b];
//unshift();将指定元素插入数组的第一个元素,并返回数组
arr.unshit("xx");//输出 ["xx","a","b"]
3.Array.prototype属性支持
Array.prototype.getMax = function(){};
Date对象
1.定义
var date = new Date();
var date = new Date(dateVal);
var date = new Date(y,m,d,[h,m,s.ms]);
2.方法
//parse 解析一个包含日期的字符串,返回1970.1.1与该日期的间隔毫秒值
Date.parse("7/16/2017")//1500134400000
with语法
为了简化对象内容的书写,可以使用js中的特有语句来完成
with(对象){
在该区域中可以直接使用指定对象的内容,不需要写对象点
}
var date = new Date();
with(date){
var year = getFullYear();
var day = getDate();
document.write(year+day);
}
Math对象
Number对象
forin语法
var arr = [10,22,11,26];
for(i in arr){
doucument.write(arr[i]);
}
自定义对象
如果想要自定义对象,应该先对对象进行描述,js是基于对象,不是面对对象。不具备描述事物的能力,我们还想按照面向对象思想编写js,就要先买搜索,在js中,可以用函数来模拟面向对象的描述
//第一种方式
//用js描述人,相当于构造器
function Persn(){
}
var p = new Person();
//动态给p对象添加属性,直接使用p.属性名即可
p.name = "name";
p.age = 29;
//如果定义的p对象的属性赋值为一个函数,即是给p对象添加一个方法
p.show = function(){};//p.show();
//第二种封装方式(描述事物)
function Person(name,age) {
//在给person对象添加两个属性
this.name = name;
//对象添加属性访问其
this.setName = function (name){
this.name = name;
}
this.getName = function(){
return this.name;
}
}
var p = new Person("aaa",33);
p.setName("ss");
p.getName();
//第三种封装方式
var = pp {
//定义一些成员
"name":"sss",
"age":33,
"getName":function(){ return this.name; }
}
//对象调用成员的两种方式
var age = pp.age;
var age = pp["age"];
遍历对象
for (x in pp) {
document.write(x+":"+pp[x]);
}
输出:name:ss age:33 getName:function(){ return this.name; }
封装键值对方式
//myName和myAge不用先定义,用字符串也是可以的
var map = {
myName:"sdf",
myAge:12
}
alert(map.myName+":"+map["myAge"]);//输出sdf:12