学习导图
JavaScript是运行在浏览器上的脚本语言。简称JS。
第一种方式:行间事件
<input type="button" value="hello" onclick="window.alert('hello js')" />
第二种方式:页面script标签嵌入
<script type="text/javascript">
/*
暴露在代码块中的程序,在页面打开时执行,并且遵守自上而下的顺序
*/
window.alert("helllo world");
window.alert("helllo js");
</script>
1. window.alert()的执行会阻塞当前页面的加载 一个页面中可以写多个脚本块 脚本块的位置没有限制 2.暴露在脚本块中的JS代码在页面打开的时候遵循自上而下的顺序依次逐行执行 3. js注释://单行 / /多行
第三种方式:外部引入
<script type="text/javascript" src="js文件路径"></script>
<script type="text/javascript" src="js/1.js"></script>
运行结果:
语法:
var 变量名;
赋值:变量名 = 值;
var i;
i=100;
i=false;
i="abc";
i=new Object();
变量未赋值,系统默认赋值undefined JS是一种弱类型编程语言,无编译阶段,一个变量可以接收任何类型的数据 一行上也可以声明多个变量
语法格式:
第一种方式:
function 函数名(形参列表){
函数体;
}
第二种方式:
函数名=function(形参列表){
函数体;
}
js中的函数不需要指定返回值类型。
第一种方式:
function sum(a,b){
//a,b形参
alert(a+b);
}
//函数必须手动调用
//sum(10,20);
//用户点击按钮,调用函数
<input type="button" value="计算10和20的和" onclick="sum(10,20)" />
以上的sum函数,可以这样调用:sum(),没有传任何实参的时候a和b变量没有赋值,则a和b都是undefined。也可以这样调用sum(10),这样就表示a变量赋值10,b变量仍undefined。还可以这样调用:sum(1,2),这样则表示a是1,b是2。
第二种方式:
sayHello=function(username){
alert("hello "+username)
}
//调用sayHello
//sayHello("张三");
//用户点击按钮,调用函数
<input type="button" value="hello" onclick="sayHello('杰克')" />
JS中的函数定义在脚本块中,页面在打开的时候,函数并不会自动执行,函数是需要手动调用才能执行的。 由于JS是一种弱类型编程语言,所以函数不能同名,没有重载机制
全局变量:
在函数体之外声明的变量为全局变量。 全局变量的生命周期:浏览器打开时声明,浏览器关闭时销毁(少用)。耗费内存空间,尽量使用局部变量。
//全局变量
var i=100;
function access1(){
alert(i);
}
access1();
局部变量:
在函数体中声明的变量,包括形参也为局部变量。 局部变量生命周期:函数开始执行时局部变量内存开辟,函数执行结束之后,局部变量内存空间释放 局部变量生命周期短。
var username="jack";
function access2(){
//局部变量
var username="lisi";
//访问局部变量
alert(username);
}
access2();
//访问全局变量
alert(username);
当一个变量声明时没有var关键字,那么不管这个变量在那里声明,都是全局变量。
function myfun(){
myname="wangwu";
}
myfun();
alert("myname = "+ myname);
typeof语法格式:
typeof 变量名 typeof运算结果只能是以下六个字符串之一,注意:全部为小写 ”undefin“ ”number“”string“ ”boolean" “object” “function”
<script type="text/javascript">
var i;
alert(typeof i);//"undefined"
var a=100;
alert(typeof a);//"number"
var b="abc";
alert(typeof b);//"string"
var c=false;
alert(typeof c);//"boolean"
var d=null;
alert(typeof d);//"object"
function sayHello(){
}
alert(typeof sayHello); //"function"
</script>
js中比较字符串使用"==",没有equals方法。
//求和,要求a,b数据类型必须为数字,不能为其他类型
//sum作用只是求和
function sum(a,b){
if(typeof a=="number" && typeof b=="number"){
return a+b;
}
alert(a+","+b+"必须都为数字!");
}
var result=sum(false,"abc");
alert(result);//Undefined
var result1=sum(1,2);
alert(result1);
Undefined只有一个值为:undefined。
当一个变量没有赋值系统默认赋值undefined
//关于NaN(表示Not a Number 不是一个数字,属于Number类型)
//什么情况下结果为NaN?
//运算结果本来是一个数字,最后计算完不是一个数字时,值为NaN.
var x=100;
var y="中国人";
alert(x/y);//除号结果应该为一个数字,但是运算过程中导致结果不是数字,最后结果为NaN
//Infinity (当除数为0时,结果为无穷大)
alert(10/0);
//关于isNaN函数?
//语法: isNaN(数值),结果为true表示不是一个数字,false表示是一个数字
function sum(a,b){
if(isNaN(a)||isNaN(b)){
alert("参数必须为数字")
return;
}
return a+b;
}
alert(sum(10,20));
//parseInt():可以将字符串自动转换成数字,并且取整数
alert(parseInt("3.9999"));//3
alert(parseInt(3.9999));//3
//parseFloat():可以将字符串自动转换成数字
alert(parseFloat("3.14")+1);//4.140000000000001
alert(parseFloat("3.3")+1);//4.3
//Math.ceil()
alert(Math.ceil("2.1"));//3
在Boolean类型中有一个函数:Boolean(); 语法: Boolean(数据); 作用:将非布尔类型转换为布尔类型
js中字符串可以使用双引号,也可以使用单引号
js中怎样创建字符串对象?
var s="abc";
使用JS内置的支持类String:var s2=new String("abc");
注意:String类为内置类,父类Object
string与String属性通用
关于string类型常用函数和属性
常用属性:
length 获取字符串长度
常用函数:
indexOf 返回 String 对象内第一次出现子字符串的字符位置。
lastIndexOf 返回 String 对象中子字符串最后出现的位置。
replace 返回替换后的字符串。
substr 返回一个从指定位置开始的指定长度的子字符串。
substring 返回位于 String 对象中指定位置的子字符串。
split 将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
toLowerCase 返回一个字符串,该字符串中的字母被转换为小写字母。
toUpperCase 返回一个字符串,该字符串中的所有字母都被转化为大写字母
.......
//原始类型string
var x="abc";
alert(typeof x);//"string"
//大string(属于Object类型)
var y=new String("abc");// "object"
alert(typeof y);
//获取字符串长度
alert(x.length); //3
alert(y.length); //3
//indexOf
alert("http://www.baidu.com".indexOf("https")); //-1
alert("http://www.baidu.com".indexOf("http")); //0
//判断一个字符串是否包含一个字符串
//alert("http://www.baidu.com".indexOf("https") >= 0 ? "包含" :"不包含"); //不包含
//replace
alert("name=value%name=value%name=value".replace("%","&"));
//sunstr和substring区别?
//stringvar.substr(start [, length ])
alert("abcdefxyz".substr(2,4));//cdef
//strVariable.substring(start, end) 注意:不包含end
alert("abcdefxyz".substring(2,4));//cd
定义类语法:
function 类名(形参){
}
类名=function(形参){
}
创建对象语法:
new 构造方法名(实参);//构造方法名和类名一致
示例代码:(1)
function User(a,b,c){
//声明属性
this.sno=a;
this.sname=b;
this.sage=c;
}
//创建对象
var u1=new User(111,"zhangsan",30);
//访问对象属性
alert(u1.sno);
alert(u1.sname);
alert(u1.sage);
var u2=new User(222,"王三",20);
alert(u2.sno);
alert(u2.sname);
alert(u2.sage);
//访问对象属性还可以这样
alert(u2["sno"]);
alert(u2["sname"]);
alert(u2["sage"]);
示例代码:(2)
Product=function(pno,pname,price){
//属性
this.pno=pno;
this.pname=pname;
this.price=price;
//函数
this.getPrice=function(){
return this.price;
}
}
var xigua=new Product(111,"西瓜",4.0);
var pri=xigua.getPrice();
alert(pri);;//4.0
示例代码:(3)
//可以通过prototype属性动态的给类扩展属性和函数
Product.prototype.getPname=function(){
return this.pname;
}
//调用getPname函数
var pname=xigua.getPname();
alert(pame);
//三个数据类型不一致
alert(typeof null); //"object"
alert(typeof NaN); //"number"
alert(typeof undefined); //"undefined"
==(等同运算符,值判断值是否相等)
===(全等运算符,即判断值是否相等,也判断数据类型是否相等)
blur失去焦点 focus获得焦点 click鼠标单击 dblclick鼠标双击 keydown键盘按下 keyup键盘弹起 mousedown鼠标按下 mouseover鼠标经过 mousemove鼠标移动 mouseout鼠标离开 mouseup鼠标弹起 reset表单重置 submit表单提交 change下拉列表选中项改变,或文本框内容改变 load页面加载完毕(整个HTML页面全部元素加载完毕之后发生) select文本被选定
任何一个事件都对应一个事件句柄,
在事件前加ononXXX这个事件句柄出现在一个标签的属性位置上。(事件句柄以属性形式存在)
第一种:直接在标签中使用事件句柄
function sayHello(){
alert("hello js");
}
<input type="button" value="hello" onclick="sayHello()" />
第二种:使用js代码完成注册
<script type="text/javascript">
function doSome(){
alert("do Some");
}
//第一步:先获取按钮对象(document,内置对象,document代替整个HTML页面)
var btnObj= document.getElementById("mybut");
//第二步:给按钮对象的onclick属性赋值
btnObj.onclick=doSome;//注意:不能有小括号
//将回调函数doSome注册到click事件上
var mybtn1=document.getElementById("mybtn1");
mybtn1.onclick=function(){//匿名函数,也是回调函数
alert("text....."); //click事件发生之后才会调用
}
document.getElementById("mybtn2").onclick=function(){
alert("text2.....");
}
</script>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>js捕捉回车键ESC键</title>
</head>
<body>
<script type="text/javascript">
window.onload=function(){
var usernameElt=document.getElementById("username");
usernameElt.onkeydown=function(event){
//获取键值 回车:13 ESC:27
//对于键盘事件对象来说,都有keyCode属性,获取键值
//ale(event.keyCode);
if(event.keyCode === 13){
alert("正在进行登录...");
}else if(event.keyCode === 27){
alert("正在进行退出..");
}
}
}
</script>
<input type="text" id="username" />
</body>
</html>
void运算符语法:void(表达式)
运算原理:执行表达式,但是不返回结果
javascript:作用:告诉浏览器后面为js代码,javascript:不能省略。
<a href="javascript:void(0)" onclick="window.alert('text')">既保留超链接的样式,同时用户点击该超链接执行js代码,但页面不跳转</a>
if switch while do…while for break continue for…in with
//创建数组
var arr=[true,false,1,3,"abc",3.14];//js数组元素类型随意,自动扩容
///遍历数组
for(var i=0;i<arr.length;i++){
alert(arr[i]);
}
//for...in
for(var i in arr){
alert(arr[i]);
}
User=function(username,password){
this.username=username;
this.password=password;
}
var u=new User("张三",222);
alert(u.username+","+u.password);
alert(u["username"]+","+u["password"]);
//with
with(u){
alert(username+","+password);
}
JavaScript控制语句与Java控制语句相类似
一起加油,一起努力,一起秃见成效