H5笔记-05

day1
一、ECMA:欧洲计算机制造商协会
ECMA-262:隶属于ECMA,专门用于指定脚本程序语言标准的一个机构
ECMAScript:一个标准,JavaScript和ActionScript
JavaScript:基于对象和事件驱动,并具有安全性能的客户端(浏览器)脚本语言。
脚本语言:不需要编译直接解释执行
JavaScript组成部分:ECMAScript核心 BOM(浏览器对象模型)DOM(文档对象模型)
二、编写方式
1、在普通标签内写js,不推荐,结构和行为没有分离
2、在script标签内写js。
3、新建一个js文件,在内部写js代码
三、变量:可变的量 通过变量名表示变量
变量声明 var a = 1;重新赋值不需要使用var
命名规则:
由数字、字母、下划线、美元符号组成,不能以数字开头,区分大小写不能是关键字和保留字
关键字现行标准里有特殊用途的一些词
保留字后续版本标准里可能会用到的一些词
四、数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。

引用数据类型:对象(Object)、数组(Array)、函数(Function)。

注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。
ES5 6种数据类型:数值number 字符串string 布尔boolean undefined null
对象object
凡是以单引号或双引号括起来的都是字符串
布尔用来判断条件
var a;a的值为undefined。
null 用于声明一个想保存具体对象,但初始化时这个对象还未出现的变量。
对象由属性和方法组成
var person = {
name: “钢铁侠”,
age: 23,
sexy: “male”,
sayHello: function () {
alert(“hello”);
}
五、算术运算符 + - * / %
赋值运算符 = += -= *= /= %=
关系运算符> < >= <= == != === !==
算术运算符>关系运算符>赋值运算符
六、类型转换
显式转换
1、Number(val) 将val强制转换成数值类型,进行下一步操作
Number(“abc”); //NaN (not a number)
Number(“10a”), Number(“a10”); //NaN
Number(“10”); //10
Number(""); //0
Number(" "); //0
Number(true); //1
Number(false); //0
Number(undefined); //NaN
Number(null); //0

2、String(val) 将val强制转换称字符串类型,简单来说就是在val外加一对引号
String(10), String(true), String(undefined), String(null);

3、Boolean(val)将val强制转换称布尔类型
非空即真,非0即真
Boolean(NaN));//false
NaN是数值类型里面一个特殊的值
Boolean(undefined);//false
Boolean(null);//false
Boolean(object)//true
//parseInt() parseFloat() 理论上都是用于将字符串转成数值的,实际上使用用于取整或者取小数

parseInt(“10a”); //
如果第一个字符为数字,依次向后取,直到不为数字结束
parseInt(“10.1a”));
parseFloat(“10.1a”)); //可以取到小数部分10.1
parseFloat(“10.1.1a”);//10.1

parseInt(“a10”); //NaN
parseInt(""); //NaN
parseInt(" "); //NaN

//隐式转换

算术运算

  • 如果有一个操作数为字符串,另外一个操作数也会转成字符串,进行拼接
    “abc” + 10; //“abc10”
    其他算术运算符 两个操作数都转成数值
    console.log(true + 10);//11
    console.log(true - 10);//-9
    console.log(undefined - 10);//NaN
    console.log(null + true);//1

关系运算
如果两个操作数都是字符串,按位比较
console.log(“12” > “2”); //"1"和"2"比
不是以上情况,其他类型转换成数值
console.log(“12” > 2);
day2
程序:代码和数据
程序结构:顺序结构、分支结构、循环结构
顺序结构:代码一行一行的执行
分支结构:根据条件选择性地执行一些代码
单分支
if(条件){语句}
if(条件){语句}
双分支
if(条件){语句}
else{语句}
多分支
if(条件){语句}
else if(条件){语句}
else if(条件){语句}
else{语句}
var val = “abc”;
var type = typeof val;
if (type == “number”) {

} else if (type == “string”) {

} else if (type == “boolean”) {

} else if (type == “undefined”) {

} else {
//判断是null还是object
if (val == null) {

} else {

}
}
判断数据类型
typeof 10; //“number”
typeof NaN;
typeof “10”;
typeof true; //“boolean”
typeof undefined;
typeof null; //“object”
typeof {}; //“object”

1.使用typeof来检测数据类型,得到的结果是一个字符串
2.如果对某个值进行连续typeof检测时 只有一种结果 “string”

if else 通常用于范围的判断
switch case 通常用于 有限离散的一些值的比较

让变量或者表达式的值和case后面的值进行全等比较 哪一个相同就执行对应的语句,如果都不相同,就执行default后面的语句
for循环,如果条件不满足,就不会执行后边代码
var oDate = new Date();
var week = oDate.getDay(); //一个数字 对应的是周几 0-6 0表示周日
switch穿透
switch (week) {
case 0:
document.write(“xiuxi”);
break;
//case穿透
case 1:
case 2:
case 3:
case 4:
case 5:
document.write(“xuexi”);
break;
case 6:
document.write(“zixi”);
break;
}
新知识点:是什么 怎么用 用在哪儿
重复执行一段相同的代码 得到相同或者不同的结果
//js里提供了三种基础的写法 while do while for
while(循环条件){
//先判断条件,如果条件满足,执行代码
statements;
}
do while 先执行一次代码,再判断条件,如果条件满足,继续执行
do{
statements
}while(循环条件);
for (表达式1; 表达式2; 表达式3) {
statements;
}
表达式1:循环变量的初始化
表达式2:循环条件
表达式3:变量的变化
for循环,如果条件不成立后边的代码就不会执行。
循环嵌套:1执行次数:外层循环走一次,内层循环走条件次
2:嵌套循环内外层变量不要用一个
3:循环结束后,循环变量取条件的临界值
continue和break
break 当循环体执行到break时,结束整个循环
当出现内外层嵌套时,break结束离它最近的那个循环
continue 当循环体执行到continue时结束当次循环,继续下一次循环
for (var i = 0; i < 5; i++) {
if (i == 3) {
// break; //直接放到循环体里
// continue;
}
document.write(i);
}
当使用break输出012
当使用continue输出0124
如果在一个循环里break和continue同时出现,则执行前面那个;

小数运算问题
1、JavaScript采用的运算规则是IEEE754标准,会把十进制变成二进制进行运算,在转换过程中,会出现精度丢失的问题
2、凡是采用IEEE754这个标准的语言都会有这个问题存在
3、可以先升幂计算再降幂还原
day3
一、函数:一段儿代码为了实现某种功能,并且这个功能在其他地方也可能使用到,我们就把这段儿代码处理为一个函数
1、函数概念:由事件驱动或者当被调用时,可重复执行的代码块
2、意义:减少代码冗余,增强了灵活性,增强可维护性,可扩展性
3、和循环混淆
1>. 写法上完全不一样 ,见创建方式
2>.执行时机上不一样,循环是只要写出来了就要执行 函数是在事件驱动或者调用时才执行
二、函数创建
1.函数声明
function functionName(){
//statements
}
2.函数表达式
var functionName = function () {
//statements
}
3.使用构造函数来创建 系统内置的构造函数Function Object Array等等 不推荐使用
var functionName = new Function();//Function是构造函数,可以看成是一个类
三、函数执行
1、事件驱动
function foo(){
alert(“hello world”)
}
btn.οnclick=foo;
btn.οnclick=function(){
alert(“hello”);
}
2、调用执行
var bar =function(){
alert(“hello”);
}
bar();
foo();
四、事件
鼠标事件onclick ondblclick onmouseover onmouseout onmousedown onmouseup
键盘事件onkeydown onkeyup
文本框事件onchange oninput onfocus onblur
表单事件onsubmit
五、参数
1、参数分为形参和实参 在创建函数,写在小括号里的变量称为形参;在调用函数是,写在小括号里具体的值称为实参
2、一般情况下,形参和实参是一一对应的,如果形参的个数多于实参,多余的形参默认取值为undefined,如果实参多余形参,实参无效
六、js解释执行和声明提升
1、JS引擎在执行代码时分两步操作
1>.先扫描这个环境,将所有的声明(变量声明和函数声明)提升值对应环境的顶部
2>.具体的代码执行,比如赋值,计算,打印等,该在哪儿执行还在哪儿执行
2、
1>.函数也存在声明提升,但是和变量声明提升有区别,变量声明只提升变量名,函数声明时提升整个函数体
2>.同名变量和函数声明,函数声明提升的优先级要高于变量声明
七、arguments和return
1、参数个数不确定时用arguments
arguments是保存了所有实参的一个集合,用在函数的内部
用法arguments[index],index从0开始
2、用在函数内部 1.结束函数执行 2.作为函数的返回值或者函数执行后的一个执行结果
如果一个函数没有return或者return后面没有值,默认返回undefined如果有值,返回return后面的值
day4
两种交互:人机交互,前后端交互
一、作用域
变量或者函数起作用(能够被访问到)的范围
全局作用域和局部作用域 具有全局作用域的变量或者函数,称为全局变量或者全局函数
1、全局作用域
1>.最外层函数或者最外层函数外用var来声明的变量
2>.在函数内部,不通过var来声明的变量(注意:强烈不建议这样写)
3>.window对象的属性和方法具有全局作用域

2、局部作用域
1>.在函数内部通过var来声明的变量或者通过function声明的函数
2>.函数的形参具有局部作用域
3>.当访问一个变量,这个变量有全局的,也有局部的,以局部为准,就近原则

二、递归函数
在一个函数内部调用函数自身,那么这个函数称为递归函数,传递和回归,在碰到某个临界值或者已知条件时开始回归

三、构造函数
1、可以把构造函数当成类来理解 构造函数的作用就是创建出具体的对象
var foo = new Function(“console.log(‘a’)”); //foo是一个函数,但是函数也是对象
2、在《JS权威指南》中 构造函数:一个普通函数,只不过和new运算符在一起使用时,称这个函数为构造函数
3、构造函数的命名有一个约定俗成的规则,首字母大写
4、对象
1.通过构造函数new出来的对象2.数据类型中的对象类型

var person={
name:“钢铁侠”,
age:19,
play:function(){
return “飞”;
}
}
花括号里放的是属性和方法
后面跟的不是函数,称为属性
如果后面跟的是一个函数,就称为方法

2、访问对象的属性和方法
对象名.属性名 对象名.方法名()
对象名[“属性名”],对象名[“方法名”]()
3、添加和修改
person.sexy = “男”; //添加
person.sexy = “女”; //修改
delete person.sexy;//删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值