day01
一:javascript概念
1:什么是JavaScript?
javascript时一种基于对象和事件驱动的脚本语言;
2;什么公司,哪一年,叫什么名字?
网景,1995,布兰登;
3:第一个标准是什么?
ECMA-262;
4:JS包含哪几部分?
ECMAscript,Dom(文档对象模型),Bom(游览器对象模型);
5:如何引进JS?
a:内嵌 - 标签内部写;
b:内部 -
c: 外部 - 外部js文件,使用
6:在JS中如何实现输出?
a: alert("");
b:console.log('');
c:document.write('');
注:数字就不用加引号,其它非数字的加引号,不区分大小写,在js中只要加引号叫字符串;
7:如何实现换行?
a: document.write 用标签;
b:alert()和console.log()用"\n"换行
"\t"空格;
二:标识符
1:什么是标识符?
标识变量,数组,函数等的有效字符序列;
2:标识符命名规则有哪些?
a: 名字只能包含字母,数字,下划线,$号组成;
b: 具有相关含义;
c:匈牙利名法:
Int iNum:以i开头的变量存储整数;
Float fNum:以f开头的变量存储小数;
Boolean bBoo:以b开头的变量存储布尔变量;
String sStr:以s开头的变量存储一个字符串;
char cCh:以c开头的变量存储一个字符;
object obj:以0开头变量存储数组;
Function fn:以fn开头的变量存储函数;
d: 不能以数字开头;
e: 不能是保留字或关键字;
f: 驼峰命名法;
大驼峰(首字母全大写)
小驼峰(第一个单词首字母小写)
三:变量及常量
1:什么是变量?
在内存中开辟一块空间,用于存储数据,且随着程序的运行,数据有可能发生变化,称变量;
2:什么是常量?
程序运行时,数值不会随着发生改变的;
3:如何声明变量,有几种方法?
a: 声明变量
var 变量名 = 常量/变量/表达式;(var num = 3+2)
b: 隐士变量
变量名 = 常量/变量、表达式(num = 3+2)
4:如何给变量赋值?
a: 变量的初始化:定义变量的同时给变量赋值;
b: 先声明后赋值;(var ch1 ch2;ch1=1;ch2=2;)
四:数据类型有哪些?
a: 基本数据类型?
Number,String,Boolean;
b: 特殊数据类型?
Null,Undefined,
c: 复杂数据类型
a: Array:数组类型是Object(对象)
b: object:对象;
五:什么是表达式?
由变量,常量和操作符组成,单独一个变量或者常量也叫表达式;
六:算术运算符及规则?
a: *(乘)
1): 数字相乘,正常结果;
2): 数字(字符串)与字符串(数字)类型相乘,把字符串转为数字,再相乘,字符串与字符串相乘,转为数字再相乘,转不了数字,结果是NaN;
3): 布尔值相乘,true时为1,false时为0;
4): null相乘,null为0;
5): undefined相乘,先转换数字,转不了直接相乘,结果NaN;
b: -(同*);
c: /(同*);
d: %(同*);
e: +
1): 字符串与字符串相加,起到连接作用;
2): 数字相加,正常结果;
3): 布尔值相加,true时为1,false时为0;
4): null相加,null为0;
5): undefined,NaN相加,结果NaN;
七:关系运算符及规则?(结果是布尔值:true,false)
>(大于)
a: 数字比较,正常比较
b: 数字类型和字符串类型比较;将字符串转成数字,如能转,正常比较,如不能转,则转成NaN,结果false;
c:字符串比较,依次比较;
d: 一律不能正常比较的都为false;
< <= >=(都同 > );
!= (只比较转换后的结果)
!== (先比较类型,再比较结果)
== ===
==与===区别:
==在判断相等时,如果数据类型不一致,会先尝试自动转换类型,
将表达式数据类型转换为相同类型再比较是否相等;
===在判断相等时,如果数据类型不一致,则直接返回 false,而不会尝试类型转换
NaN不等于任何数,包括它自己;
八:逻辑运算符及规则?
!(非真即假,非假即真)
&&(与,并且)
逻辑关系:先判断&&左边的表达式,如果表达式的值为false,则返回坐标的表达式(此时为短路问题)如果表达式的值为true,
则继续判断右边表达式的值,返回右边表达式的值;
||(或者)
逻辑关系:先判断||左边的表达式,如果值为true,返回坐标表达式的值(此时为短路问题)如果为false时,返回右边表达式的值;
九:三元运算符及规则?
(表达式1) ? 表达式2 :表达式3
逻辑关系:先判断&&左边的表达式,如果表达式的值为false,则返回坐标的表达式(此时为短路问题)如果表达式的值为true先判断表达式1,值为true时,执行表达式2,值为false时,执行表达式3;
十:赋值运算符及规则?
简单赋值:= (将赋值号右边表达式的值赋给左边变量 var a = 3)
+= —= *= /= %=(符合算术赋值)
运算逻辑:取运算符左边变量中的值与运算符右边表达式的值进行相应的算术运算,运算后的结果再次赋值给左边的变量;
十一:特殊运算符?
a: typeof :检测简单数据类型
typeof "";String;
typeof 3:Number;
typeof blean:Blean;
typeof undefined:Undefined;
typeof null:Object;
typeof function:Object;
b: new:创建对象;
十二:数据类型转换?
1:自动类型转换;
2:强制类型转换;
a: isNaN(): 判断括号中的表达式值是否为NaN;如果是NaN,返回true;否则返回false;
b: parseInt(): 将字符串强制转换成整数(必须以有效数字开头才会转数字,否则转为NaN)
c: parseFloat(): 将字符串强制转换成小数(必须以有效数字开头才会转成小时,否则转为NaN)
d: Number(): 将字符串强制转换成数字(整个字符串必须是有效数字才会转,否则转为NaN)
e: eval();将字符串强制转为表达式并返回表达式的值;
十三:自增自减运算符
a: ++
b: --
运算逻辑:i++(先取出变量i中的值参与运算,再将i的值加1);
++i(先将i的值加1,再取i的值参与运算);
day02
一:程序的单分支结构if语句
1:顺序结构:程序是按顺序从上往下执行的。
2:选择结构:选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程;
a:单分支选择语句:
if(表达式){
语句组;
}
逻辑关系:当程序执行到if时,先计算表达式的值,值为true,则执行语句组;值为false时,执行if语句后面其它语句;
b:双分支选择语句:
if(表达式1){
语句组A;
}else {
语句组B
}
逻辑关系:当程序执行到if时,先计算表达式1的值,值为true时,执行语句组A,值为false时,执行语句组B;
注:能用三元解决问题的,有限使用三元,否则使用if;
c:多分支选择语句:
if(表达式1){
语句组A;
}else if(表达式2){
语句组B;
}else if(表达式3){
语句组C;
}else{
语句组D;
}
逻辑运算:当程序执行到if时,先计算表达式的值,值为true时,执行语句值A;值为falses时,再计算表达式2的值,值为true,执行语句组B;值为false时,再计算表达式3的值,
值为true时,执行语句组C,值为false时,执行语句组D,以此类推。
d: 多分支选择语句:
switch(表达式){
case 常量表达式1:语句组1;break;
case 常量表达式2:语句组2;break;
....
case 常量表达式n:语句组n;break;
default:语句组n+1;break;
}
注:加上break,default与case顺序可以随意;
break与default可以省略;
不允许出现相同的case值;
逻辑运算:当程序执行到switch时,先计算表达式的值,如果该值与下面某一个case后的常量表达式一致时,执行case后的语句组;如果后面有break语句时,则终止switch语句,退出switch语句;
如果语句组后没有break语句时,则继续执行其后面的所有语句组,直到遇到break或者大括号;
举例:1:任意输入一个数字,判断是星期几;
2:判断成绩优(90-100)良(80-89)中(70-79)差(60-69)不及格(<60);
3:设计一个具有+、-、*、/、%的简单计算器;
day03
一:循环语句
1:概念?
满足一定条件,重复执行一段相同的代码块;
2:循环思想?
1)从哪里开始 循环初值;
2)到哪里结束 循环终值;
3)步进(每次递增或者每次增减多少);
3:实现循环的语句?
A 当型循环:(先判断条件后执行语句)
表达式1;
while(表达式2){
语句组;
表达式3;
}
逻辑关系:先执行表达式1,再执行表达式2,值为true时,进入循环体,执行循环组中的语句组和表达式3;执行完循环体后再次计算表达式2的值,值为true,继续执行循环体,
直到表达式2 的值为false时,退出循环体;
B 直到型循环:(先执行语句后判断条件)
表达式1;
do{
语句组;
表达式3;
}while(表达式2);
逻辑关系:先执行表达式1,执行循环体里的语句组和表达式3;然后在计算表达式2的值,值为true时,再执行循环体,直到表达式2的值为false,退出循环体;
while与do while 的区别?
a: while 先判断条件再执行语句,do while先执行语句再判断条件;
b: do while后面必须加分号;
c:当第一次条件为假的时候,do while至少执行一次语句组,while一次都不执行;
C for(多功能循环语句)
for(表达式1;表达式2;表达式3){
语句组;
}
逻辑关系:同当型循环逻辑;
举例:
a)解决猴子吃桃的问题(有一只猴子,还有一堆桃子,第一天的时候,吃了一堆桃子中的一半,没忍住,又多吃了一个;第二天的时候,又吃了剩下桃子中的一半,没忍住,又多吃了一个,以后每天如此,直到第10天的时候,只剩下了一个桃子,问第一天的时候有多少个桃子)
b)求1+2+3+……+100的和
c)输出1-100中(7的倍数和带7的数除外)的数。
d)输出m至n的自然数中的偶数和与奇数和并统计偶数与奇数的个数分别是多少?
e)入职薪水10K,每年涨幅5%,50年后工资多少?
f)打印100以内 7的倍数
g)打印100以内的奇数
二:关键字?
a: break;
用于swich语句,终止语句的执行;
用于循环语句中,终止一层循环;
b: continue;
用于循环语句中,终止一次循环;
三:循环嵌套?
举例:
(八)输出九九乘法表
(九)输出一元钱的兑换方案(1角2角5角)
(十)打印100~200之间所有能被3或者7整除的数
(十一)计算100的阶乘
(十二)求100-999之间的水仙花数。abc =++
day04
举例:
1:输出三角形;
2:九九乘法表;
3:输出一元钱的兑换方案;
4:打印100-200之间所有能被3或者被7整除的数;
5:求100-999之间的水仙花数;
6:输出m至n的自然数中的偶数和与奇数和并统计偶数与奇数;
7:求出1-1/2+1/3-1/4...1/100的和
一:函数(上)
1:概念?
对于需要反复使用的功能代码块,封装成一个独立的模块,这种功能代码块叫函数;
2:类型?
内建函数;
自定义函数;
3:属于什么对象?
javascript的函数属于Function对象;
4:定义函数?
a: 语句定义法;(声明法)
function 函数名([形参]){
语句组;
}
b:表达式定义法;(赋值法)
var 函数名= function([形参]){
语句组;
}
5:函数的参数?
1)实际参数:调用函数时调用的参数;
a: 实参可以是变量,常量,表达式;
b: 实参数量大于形参数量时,多余的实参自动忽略;
c: 实参数量小于形参数量时,多余的形参值为undefind;
d: 传参时,只能实参传给形参,单向传递;
2)形式参数:定义函数时,接收数据的参数;
a: 形参只能是变量;
6:return返回值?
a: 函数中可以有多条return语句,但只能返回一条return语句的值;
b: 函数中可以没有return;
7: 函数?
a: 无参无返回的函数;
function fn(){
alert("hello");
}
fn();
b: 无参有返回的函数;
function fn(){
return alert("hello");
}
fn();
c:有参无返回的函数;
function fn(a,b){
alert(a + b);
}
fn(3,3);
d:有参有返回的函数;
function fn(m,n){
return m*n;
}
fn(3,3);
8:事件的概念?
通常鼠标或者热键的动作,我们称为事件(event);
热键引发的一连串程序的动作,称为事件驱动(event DRiver);
而对事件进行处理的程序或者函数,我们称为事件处理程序。
9:事件的种类?
a: 页面事件:
onload:页面加载事件;
onfocus:得焦事件;
onblur:失焦事件;
onchange:改变事件;(改变文本框的值时,才会触发该事件)
b:鼠标事件:
onclick:鼠标点击事件;
ondblclick:鼠标双击事件;
onmouseup:鼠标弹起事件;
onmousedown:鼠标按下事件;
onmouseover:鼠标移入事件;
onmouseout:鼠标移出事件;
onmousemove:鼠标移动事件;
c:键盘事件;
onkeyup:键盘弹起事件;
onkeydown:键盘按下事件;
onkeypress:键盘按过事件;
10:作用域及作用域链?
作用域:区域,范围;
script标签:称为全局作用域;
script标签所有声明的变量,称为全局变量;
在script标签中所有声明的函数,称全局函数;
JS解析器步骤:
1)在作用域中寻找一些东西?var function 参数
注:a: 只要找到var 解析器就会给这个变量初始值一个Undefined的值;
b: 当变量名与函数名重名时,预解析将保留函数;
c: 当函数名重名时,保留后面的函数;
d: 当有多个script标签时, 从上到下,先解析并执行第一个script作用域中的内容,当第一个全部执行完毕时,再开始解析并执行
第二个script作用域的内容;
2)逐行解析代码
a: 表达式:会修改第一步中的值;
b: 函数调用:产生函数作用域启动新的作用域解析器;
b-1:预解析:找var function 参数;
b-2:逐行解析代码
表达式;
函数调用;
11:Bom中的顶级对象是window;
this所在的函数属于哪一个对象,该this就代表这个对象;
day05
举例:
1:编写函数iseven,其功能为判断一个整数是否为偶数,若是偶数,返回1,否则返回0,在程序中调用此函数,
对输入的一个整数进行判断,若是偶数,输出even,否则输出odd。
2:编程求x的阶乘和y的阶乘的和,要求设计一个fac(n)函数求正整数n的阶乘;
3:计算s = 2^2!+3^2!
4:某个公司采用公用电话传递数据,数据是四位数的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,
然后用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,请编写一个函数,传入原文,输出密码;
一:作用域
全局作用域和局部作用域
二:局部作用域和全局作用域?
局部变量:在函数中以var关键字定义的变量叫局部变量;局部变量只能在所在的函数内部有效;
全局变量:可以整个脚本域中有效;
三:递归函数
a:概念?
就是自己调用自己的过程;
b:本质?
实现循环;
c:循环三要素?
从哪里开始;到哪里结束;步进;
举例:a 求1至100的和;
b 输出10个hello world;
c 求第20个以内的斐波那契数列
四:匿名函数及调用方式
1:概念?
就是没有名字的函数;
2:调用方式?
a: 把匿名函数赋值给一个变量;
var fn = function(){};
b: 通过绑定事件,作为事件处理函数来调用;
document.onclick = function(){};
c: 通过自我执行来执行匿名函数;
(function(){})();
d:把匿名函数自我执行的返回值赋值给变量;
var n = functiong(a){
return a;
}(2);
alert(n);
e: 自我执行后用alert打印;
alert((function(a){
return a;
})(2));
f: 自我函数的传参;
五:构造函数及对象类型
1:对象:一切皆对象;
object:对象;物质;
物质:一切只有本质特性和行为的事物;
属性:描述事物的本质特征;
方法:该事物行为;
2:什么是类(构造函数)?
具有相同属性和方法的一组对象;
类是对象的抽象化,对象是类的具体化;
3:构造函数的规范?
a: 构造函数也是函数,但函数名第一个大写;
b: 必须new构造函数名();
c: 必须使用new运算符;
注:构造函数和普通函数唯一的区别,就是他们调用的方式不同,只不过构造函数也是函数,必须用new来运算符来调用,否则就是普通函数;
4:构造函数工厂模式的区别?
a: 构造函数没有new object,但它后台会自动 var obj = new object();
b: this 就相当于obj;
c: 构造函数不需要返回对象引用,后台自动返回;
5:创建对象?
a: 以字面量的方法;
var obj = {
name:"张三",
ago:18,
sex:"男",
phone:12313,
qq:456456;
//添加方法
showName:function(){
return this.name;
},
showAge:function(){
return this.age;
}
};
console.log(obj.name);
console.log(obj.showName());
b: new Object;
c: 工厂模式;
d: 构造函数(类);
function Person(name,age,sex,phone,addr){
this.name;
this.age;
this.sex;
this.phone;
this.addr;
//添加方法
this.showName = function(){
return this.name;
};
this.showAge = function(){
return this.age;
}
this.showSex = function(){
return this.sex;
};
}
var ps1 = new Person("张三",18,"男",123123."北京");
console.log(ps1);
typeof:返回基本数据类型的数据,复杂数据只能返回object;
instanceof:检测某个实例对象是否属于哪一个类;