js简介
1 用途:制作页面交互效果
如 轮播图的切换、Tab栏切换、地图、表单验证等
2 历史背景
全称 javascript 与Java语言没关系
javascript vbscript jscript
脚本语言:嵌入在html中,由浏览器解析执行
3 javascript与ECMAscript的关系
var i = 1;
插座
Javascript actionscript(Flash)
ECMAscript是制定标准的,js和as遵循这个标准
ecmascript5
新的事物或技术 关注
4 js今天的历史重任
2003之前, js做广告的
2004年 Google ajax(用js实现)
2007 js做移动端页面
三层标准
2010 HTML5(canvas)
2011 node.js 可以让我们开发服务器程序
webapp (用web的技术开发app)
成本节约、跨平台
携程网 ios andriod wp 30*3
3~4个人 app
js: 好学的语言,
js核心内容: 基础语法(重点) 变量 表达式 循环 函数 数组等
dom(重点) js控制一些HTML元素
bom(了解)控制浏览器的一些东西
js的学习方法: 基础扎实--->
多品味别人的程序(思想、思路)
----> 多写逻辑程序
************js知识点*********************
js(除了node.js)是前台语言,由服务器把js文件传输到客户端
,由客户端的浏览器去解析执行
后台语言(php/java等)数据的处理
书写第一个js程序
1 js代码引入位置
在head标签里面放入
<script type="text/javascript">
//js代码写在这对标签里面
</script>
2 alert("消息");
在浏览器中,弹出一个窗口
console.log("信息"); 在控制台输出信息
3 语法规则
a JavaScript对换行、缩进、空格不敏感,但是书写的时候
要养成良好的代码风格(一行只写一条语句,适当地缩进等)
b js语句是以分号作为结束标志
c 这些符号都是英文
4 注释
html的注释 <!-- 注释的内容 -->
css的注释 /*注释的内容 */
js的注释: 单行注释 // sublime快捷键 ctrl+/
多行注释 /* ... */ sublime快捷键 ctrl+shift+/
5 直接量(常量)
数字: 100 -15 12.3 等
字符串: "hello" "abc123"
alert(10);//弹出数字10
alert("10");//弹出字符串10
判断错误
alert(2016);
alert("2016");
alert(八十九);//错误 要加双引号
6 变量(未知数)
js声明变量 var z = 123;
var a = "中国";
var叫关键字,定义变量
z叫变量名 变量名符合一定规则
* 由数字、字母、下划线、$组成
* 不能以数字开头
* 不能是关键字
* js区分大小写
= 赋值号,上面代码含义就是把123值赋值给左边变量z
保留字不能做变量名
abstract、boolean、byte、char、class、const、debugger、double、enum、export、extends、final、float、goto
implements、import、int、interface、long、native、package、
private、protected、public、short、static、super、
synchronized、throws、transient、volatile
变量先定义后使用
7 typeof 判断数据的类型
typeof 变量或表达式
结果是number 表示是数值(整数或小数)
.............string 表示是字符串
******************************************************************
1 alert("消息");
完整的语法 window.alert("消息");
2 console.log("信息");
3 confirm("...");一般与if...else配合使用
4 prompt 接受用户输入信息,用户输入的信息都是字符串
5 document.write("....");往网页中输出信息,而且参数可以放置标签
undefined 表示变量未初始化
b is not defined b没有定义,这是报错的
连字符和加号
+ 加法
1+2
+ 表示字符串连接
数字+字符串,先把数字转成字符串,变成两个字符串连接
"999"-111 即 999-111
"999"-"111" 即 999-111
"3ac"-"100" NaN(not a number) 是一种数据类型
% 求余(取模)
15%2 1
a%b 结果这个余数的符号和被除数一致
+ - * / % ()
变量值的传递
a = b;
含义: 把变量b的值赋值给左边的变量a,但是b的值是不变的
乘方 Math.pow(3,4); 表示3的4次方
Math 数学对象
pow 数学对象的方法
对象.方法(参数);
平方根 Math.sqrt(16);
sin cos
字符串如何转为数字
parseInt("5"); //把字符串5转为数字5
parse 转换
parseInt(5.999);//结果是5
parseInt("365天");//365
10.99+10.88
parseFloat("10.99");//10.99
作业 模拟小小计算器 (两数相 + - * /)
程序流程控制:
顺序结构: 程序从上往下,一句句执行;
条件结构:if if-else等
循环结构: while、for、do-while
1 if结构
if(表达式) {
表达式成立需要执行的语句;
}
执行流程: 先判断表达式真假,假如条件表达式为真,
大括号里面的语句就会被执行,否则大括号里的语句就
不会被执行
if(a%2==0)
alert(....);
alert("over");
假如没有加大括号,默认是下面的第一条语句作为if的语句,
初学者尽量养成加大括号的习惯
2 if-else
if(条件) {
语句1;
} else {
语句2;
}
条件为真,执行语句1,否则执行语句2
3 多分支语句
90-100 优秀
80-90 良好
60-80 及格
<60 去补考
成绩需要用户去输入,对用户输入的成绩进行判断
分析思路:1 利用prompt函数提示用户输入一个值,用
parseInt() 将值转化为数字
2 用一个变量 ,把这个数字保存起来
3 判读
*******************************************************************************
运算符:算术的运算
布尔值true false
var b ="true"//不是布尔值
关系运算符:
>>=<<=
==等于
===全等于
!=不等于
!==不全等于
关系运算符得到的结果是逻辑值,假如为真,则条件成立;
为假,则条件不成立
=赋值号一点等于的意思都没有
表示两个东西是否相等,千万不能用
==表示两个数是否相等还可以表示字符串是console.log(10==“10”);//ture
说明==不严格,把"10"转化为10然后比较
=== 全等于
console.log("56" === 56); //false
console.log(56 === "56"); //false
console.log("56" === "56"); //true
console.log(56 === 56); //true
!= 对 ==取相反
!== 对===取相反
10!="10" 10=="10" 是true
10!=="10" 10==="10" false
console.log(3 != 8); //true
console.log(3 != "3"); //false,因为3==”3”是true,所以反过来就是false。
console.log(3 !== "3"); //true,应为3===”3”是false,所以反过来是true。
逻辑运算符 && || !
&& "并且"
|| "或"
! 取反
num>10&&num%2==0
score<0|| score>100
10<a<30 a>10&&a<30
10<a<30 先计算10<a 的结果,拿这个结果与30比较
3<2<15 3<2&&2<15
流程控制结构: 顺序结构 条件结构 循环结构
if(a>0)
{
if(a>100) {}
else {}
}
else {}
嵌套:if语句又含有if结构
while do-while for
循环: 重复
写一个程序: 在文档页面打印1-100
for(表达式1; 表达式2;表达式3) {
循环体
}
表达式1 一般用于定义循环变量 也可以省略
表达式2 一般放的是循环条件
表达式3 一般放的是循环变量变化
大括号里的叫循环体(需要重复的语句)
var i=1;
for(;i<=100; i=i+1) {
document.write(i);
document.write("<br/>");
// document.write("这是第+“i”+");
}
草稿: i ---- 1
1<=100 成立
打印1和换行
i ----- 2
2<=100 成立
打印2和换行
i ---- 3
...
i --- 100
100<=100
打印100和换行
101<=100
******************************************************************
三种循环: while do-while for
三种区别:语法规则不同,三种形式可相互替代
for循环:用的比较多,一般用于循环次数确定
1 语法
var sum = 0;
for(var i=0; i<=100; i++) {
sum = sum + i;
}
alter(sum)
2 执行流程
3 练习
求1~100之间所有的数的和、平均值
求1~100之间所有的偶数的和、奇数的和
本金10000元存入银行,年利率是千分之三,
每过1年,将本金和利息相加作为新的本金,计算5
年后,获得的本金是多少?
有个人想知道,一年之内一对兔子能繁殖多少对?
于是就筑了一道围墙把一对兔子关在里面,已知一对兔子
每个月可以生一对小兔子,而一对小兔子从出生后第三个月
起每月生一对小兔子。假如一年内没有发生死亡现象。那么,
一对兔子一年内(12个月)能繁殖成多少对?
兔子的规律为数列 1 1 2 3 5 8 13 21
打印9*9乘法口诀表
打印正方形
打印直角三角形
计算出1到100之间所有不能被3整除的整数的和大于等于2000
的数字
while
while(条件)
{
循环体;
}
1+2+...+10
var sum = 0;
for(var i=1; i<=10; i++) {
sum = sum +i;
}
var sum = 0;
var i = 1;
while(i<=10) {
sum += i;
i++;
}
do {
循环体
} while(条件); (注意这里有分号)
1 do和while配合使用
var sum = 0;
var i = 1;
do {
sum = sum + i;
i++;
} while(i<=10);
while与do-while的区别:
while循环体有可能一次都不执行
do-while 至少执行一次循环体
break与continue
1 break用于循环,跳出循环
例子:1 3 5 7 9 ... 101
for(var i=1; i>0 ;i+=2) {
if(i>101)
break;
console.log(i);
}
2 continue只能用于循环,提前结束本次,接着下一次循环
switch(表达式或变量) {
case 常量:语句;
case 常量:语句;
case 常量:语句;
default: 语句;
}
例子:for(var i=1; i<10;i++) {
if(i%2==0)
break;
console.log(i);
}
3.switch执行流程: 先算表达式或变量的值 ,拿这个值找相对应的
case,假如找到匹配的,就从该case后面语句执行,直到遇到break
或者switch的结尾,假如找不到匹配的case,就执行default.
例子:var a = 6;
switch(a) {
case 1:a++;
case 2: a*3;
case 3: a-=6;
break;
default: a=a%2;
}
alert(a);//-3
1000天后 是周几b
num = 1000%7;
switch(num) {
case 0: alert...
case 1: ...
}
数组 :
1 引入: 解决的是一组数据
var num = "张三";
num = "李四";
一组数据
2 数组定义
方式一 var arr = new Array();//通过new来创建
方式二 var arr2 = [];
例子:定义了一个数组 数组名为arr
var arr = new Array();
arr[0] = 12;//给数组中第一个元素赋值
arr[1] = "abc";
alert(arr.length);
var arr2 = [];
arr2[0] = "123";
arr2[1] = 10;
arr2[2] = 20;
var arr2 = [10,20,30];//整体赋值
alert(arr2.length);
var arr = [1,2,3,4,5,6,7,8,9,10,20,30];
var arr = new Array(1,2,3,4,5,6);
alert(arr[0]);
alert(arr[1]);
alert(arr[2]);
alert(arr[3]);
遍历数组
for(var i=0; i<=arr.length-1; i++) {
console.log(arr[i]);
}
3 数组元素如何表示
数组名[角标或下标]
角标从0开始计数 最大值为length-1
arr[0] 代表数组中第一个元素
arr[1] 代表数组中第二个元素
4 数组的长度(数组元素的个数)
arr.length;//代表arr数组的长度
5 数组的遍历(对每一个数组元素进行访问)
计算10 20 30 40 50 60 70 的和与平均值
var sum = 0 , avg;
var arr = [10,20,30,40,50,60,70];
for(var i=0; i<arr.length; i++) {
sum = sum + arr[i];
}
avg = sum/arr.length;
alert("和"+sum+"平均值"+avg);
***************************************************
js 基本语法+DOM(如何用js操作html的元素)+BOM(了解)
函数
目标 1.掌握基本语法
2.用函数解决问题
一段代码反复被使用,造成代码度高
函数:为了提高代码的复用性,对一段js代码进行封装,可被反复使用被调用
//src="myfunc.js"外联
//定义一个函数
例子: function getSum(){
var sum=0;
for(var i=1; i<=100; i++){
sum+=i;}
alert(sum);
}
//完整定义函数
function 名字(参数1,参数2,。。。){
//函数体
}
//2 调用函数 函数名(参数);
getSum()
//定义一个函数,函数的功能求n-m之间所有的数的和
//函数的定义,规定了两个参数n,m这叫形式参数(形参)
解: function getSum(n,m){
var sum=0;
for(var i=n; i<=m; i++){发·
sum+=i;}
alert(sum);
}
function add(x,y)
//求10-20之间的和
//函数调用,10,20叫做实际参数(实参)
//实参传递给形参,一一对应
getSum(10,20);
getSum(100,1000);
//求两个数的和
//通过return把值返回,return还有一个作用,提前结束函数调用
解: function add(x,y){
//在函数內部定义的变量叫局部变量,只在函数内部有效
var result=x+y;
return result;//返回值
}
alert(add(3,2));
函数递归:自己调用自己
例子:
function fun(n){
if(n==1)
return 1;
else
return+fun(n-1);
alert(fun(6));
}
fun(6)开始调用函数,n获得6,返回6+fun(5)----->
接下来执行fun(5)n获得5,返回5+fun(4)------->
.........fun(4)n获得4,返回4+fun(3)------->
.........fun(3)n获得3