1.javaScript:与html混用的语言,编写的程序可以在浏览器中解释执行。
区分大小写
三种方式:第一种在直接写在html里面
<
input type="button" onclick="alert
('第一个js测试')
" value="第一个"
/>
第二种:声明js代码块,可以在html里面任意位置声明,包括<html>标记之外,大量js则推荐body之后。
<
script type="text/javascript"
>
function testJs02(){
alert("第二个js测试");
}
</script>
<input type="button" onclick="testJs02();" value="第二个"/>
第三种:新建js文件夹,
outJs
文件,外部引入
<
script src="js/outJs.js" type="text/javascript" charset="utf-8"
></
script
>
function
testJs03(){
alert("外部引入");
}
2.变量:
全局变量:声明在js代码块内部,函数外部,全部的script都能使用
局部变量:声明在函数内部
不能使用未声明的变量。
如果在局部变量中,变量声明的时候没有加var,在第一次使用的时候会变为全局变量。(不推荐)
函数返回值 : 默认返回值为
undefined
特殊类型:(Object)
null(空对象)和undefined(只声明未初始化)
因为undefined派生于null,所以null和undefined相等
对象类型:object,数组,函数
隐式转换:
做加法运算时,所有类型都向number类型靠拢
boolean类型:true=1 false=0
遇到字符串类型就会进行字符串的拼接
显示转换:
parseInt('str'); //显示转换成整型
parseFloat('str'); //转成浮点型
会执行最后一个test02,因为js从上往下执行,最后一个test02把前面的覆盖了,最终会提示test02()未定义,报错
console.log("aaa"); //控制台输出
typeof 显示数据的类型
3.
变量:
var num = 5;
数据类型:分为原生类型和对象类型
原生类型:数值型、布尔型、字符串型
number:整型,浮点型,Infinity,NaN(自身不等于自身)
特殊类型:(Object)
null(空对象)和undefined(只声明未初始化)
因为undefined派生于null,所以null和undefined相等
对象类型:object,数组,函数
Date Array
var a=100; b ="abc"; c=true; alert(a+c+b); //
101abc
此处true代表1
运算符:
等同符:=== 不会发生隐式转换,既比较数据类型也比较数值
等值: == 会发生隐式转换,比较数值是否相等
NaN:与任何数字相减都等于NaN,并且自己不等于自己
var
a=1;
var
c=true;
alert(a
==
c);//true
隐式转换:
做加法运算时,所有类型都向number类型靠拢。
boolean类型:true = 1 false = 0
遇到字符串类型就会进行字符串的拼接
显式转换:
parseInt('str'); //显式转换成整型
parseFloat('str') //显式转换成浮点型
5.window.document.write("aaa"); //打印
6.数组:
长度可变,元素类型可以不同,JS数组长度随时可以变,随时可以修改,可以通过修改数组长度清空数组。
array.length获取数组长度,也可以修改数组长度。
array.push("aaa"); //数组末尾添加aaa
array.pop(); //删除数组最后一项
array.unshift("aa"); //数组第一个元素位置添加元素
array.shift(); //删除数组第一个元素
array.join("-") //以-形式,连接所有元素
7.函数:
写法1.function var fun01(var a,var b){ //var一般省略 调用οnclick="fun01(3,4);"
return a+b;
}
写法2. var fun02=new Function("a","b","var c=a+b;alert(c);return c"); //函数也是对象(几乎不用)
写法3. var
fun03=function(
var
a,
var
b){ //把函数的引用指向变量 使用fun03(3,4)
return a+b;
}
a.
函数之间可互相调用 b.函数可以当实参传递
var
fun04=new Function("a","b","c","fun03(a,b,c)"); //调用的时候
onclick
="fun04(10,20,3);"
8.常见内置方法
Math.random(); [0,1) Math.round(4.3) 四舍五入
ParsetInt() escape()对字符串进行编码(16进制) unescape()解码
escape(m2)
unescape(m4)
encodeURI(m2)
对字符串进行编码(IE进行base64编码)
eval()把字符串当成动态的js代码进行解析(可以对内部数据继续运算) 如"122+3"会得到结果为125
针对于字符串内部中有运算符而言
var
m5="var num=123";
eval(m5);
var
m5="var abc='a',b=1122";
num
=
eval(m5);
alert(num); 显示1122
9.Date:
var tdate=new Date(); //当前时间
var ddate=new Date('2016-10-12");
var vardate=new Date(2016,10,28);
var str="aBcDeFg"; str.substr(int,length); str.substring(startpos,endpos); 不包括endpos
10.创建对象两种方式:
方法一:
function
testnewObj(username,userpwd){
var mobj=new Object();
this.name=username;
mobj.fav=["aa",11,new Date()];
mobj.pwd=userpwd;
return mobj;
}
方法二:
function
testnewObj02(username,pwd){
var newObj02={};
newObj02.name=username;
newObj02.pwd=pwd;
newObj02.m=function(){
alert("mmmm");
}
return newObj02;
}
跟地址有关
prototype: 存放一些公共的相同属性或者方法(每个类都有)
function
testFactoryClass(a,b){
this.name=a;
this.pwd=b;
this.prototype=['ss',11];
}
function testFactoryClass022(a,b){
var cobj=new testFactoryClass(a,b);
cobj.prototype=["菜啊擦擦啊",1122];
var cobj22=new testFactoryClass(a,b);
alert(cobj.prototype
+"---"+
cobj22.prototype);
}
11.JSON对象表示法:
www.json.org/json-zh.html
第一种方式:json是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成。
function testJson01(){
var json02={
username
:"aaa"
,
fav:["1111",22,new Date()],
met:function(){
alert("ssss");
}
}
;
alert(json02.fav[2]+"--"+json02.username+"--"+json02.met());
}
第二种方式:
//数组格式json
function testJson02(){
var json=[{
username:"aaa",pwd:111},{username:"bbb",pwd:222},{username:"ccc",pwd:333}]
;
alert(json[1].pwd);
}
第三种方式:
//json嵌套json
function testJson03(){
var json=[{
{username:"aaa",pwd:333,ppee:{pname:"sss",pwww:{
pwqq:"pqs"}}}];
alert(json[0].ppee.pwww.pwqq);
}