笔记

146 阅读4分钟

day-01:

1.JavaScript是什么?

JS:运行在浏览器、弱类型、解释型面向对象的编程语言。
弱类型:不需要定义变量类型,其变量类型由变量保存数据所决定。
解释型:不需要编译,在出错后后续代码不执行,但前面未出错的代码仍然可以运行。
面向对象:对象名.方法()/对象名.属性名
JS的发展历程:3-12没有4

2.怎么使用?

引入JS的方法:
1.直接在body里写<script>JS相关内容</script>
 2.在head里引入<script src="js路径"></script>

3.怎么输出内容?

console.log(输出内容)//在打印台输出
仅程序员可见,用于打桩输出查找错误
document.write(输出内容)//在页面输出
内容会覆盖原有的内容,不推荐使用
alert(内容)//在弹窗输出
如果弹窗没有关闭页面会一直加载,无法看到页面内容,不太推荐使用

4.变量的使用

变量:用于需要频繁使用的数值
声明变量:
var 变量名=值
变量名的命名规则:
 1.不能使用关键字
 2.使用驼峰命名或下划线
 3.见名知意,英文命名最佳
 4.不用数字开头
 5.变量若不赋初值,默认为undefined类型
常量的声明:
const 常量名=值(固定值)

5.数据类型

 基本数据类型:
 数值类型:number取值很多
 字符类型:string取值很多,需要引号括起来
 布尔类型:boolean取值true/flase
 未定义类型:undefined取值,未定义变量的默认值
 空类型:null取值释放内存(变量)但基本不用
 引用对象类型:11

运算符

算术运算符:+加、-减、*乘、\除、%求余
求余n%2用于判断奇偶
n%100取出多位数的后2位
隐式转换:自动将两边的值转为数字,但只能转化可识别的
string仅含有数字-->数字
string含有不可识别部分-->NAN
true-->1
false-->0
null-->0
undefined-->NaN
NaN做任何运算得到的结果都为NaN但他是一个数值类型,且与参加任何比较得到的结果都是false
若+中有字符串出现会将两边的内容转换为字符串拼接起来
比较运算符:>,<,=,>=,<=,==,===,!=,!==
其所得结果一定为布尔值(true,false)
左右两边同样会转换为数字比较
若两边为字符串,比较Unicode码,按位比较
如果判断一个值是否为数字!isNaN(X)
两个等于的区别:==仅仅值相等/===值和类型都相等
所以undefined和null是不一样的
赋值运算符:=,+=,-=,*=,/=,%=
逻辑运算符:&&/||/!(结果布尔值)
&&与运算:全满足为true,一个不满足条件即其值为false
||或运算:一个满足就为true,都不满足为false
!否:!true=false,!!true=true
自增自减:
i++,i--相当于i=i+1/i+=1

前++,后++区别:前++先运算再返值,后++先返值后运算。二者单独使用时,并无区别

位运算:m>>n,m右移n位,等于m/2的n次方
       m<<n,m左移n位,等于m*2的n次方

day02

分支结构if的三种写法

if(条件){操作}
if(条件){操作}else{默认操作}
if(条件1){操作1}else if(条件2){操作2}

switch case的写法

switch(变量){
    case 值:
    操作一;
    break;
    default:默认操作;
    }

if和switch的区别

switch:效率高,速度块,但是需要最后的结果才能执行
if:可以做范围判断但是执行效率较慢

三目运算;

语法:条件?操作1:默认操作
注意:默认操作不能省略,操作语句只有一行,多语句就推荐switchif

强制转换类型

转字符串:
 var str=x.tostring();
 var str=String();//等效隐士5转换
 转数字:
 parseInt(str/num);//遇到非数字停止,上来就是非数字就NaN,不认识小数点
 parseFloat(str);//原理同上,认识第一个小数点
 Number();//等效隐式转换
 转布尔:
 Boolean();//只有False,0,"",undefind,null,NaN这六个是fakse其他都是true

day03

循环

while循环:
var 循环变量=x;
while(循环条件){
循环体
循环变量
}
循环是一次一次执行的
for循环:
for(循环变量;条件;变量的变化){
操作
}


whilefor的区别:
while一般用在不知道循环次数时
for一般用在知道循环次数时

function基础

概念:

function--函数称之为方法先预定好的以后可以反复使用

函数的使用

定义:function 函数名(){函数体}
调用:直接在js中写:函数名()
在html中绑定事件:<elem onclick="函数名()">文字</elem>

什么时候使用:
不希望页面打开就立刻执行
希望由用户触发
函数地位在js中时第一等公民

函数带参数的用实参接住且传参顺序不能变

day04

function的创建和使用

创建:function 函数名(形参){函数体;return返回值;}
或者 var 函数名=function(形参){函数体;return返回值;}
调用:var result=函数名(实参)
return:本意为推出循环,但有数据就会把数据返回函数外部,但是不保存数据所以需要一个变量接住

作用域:

全局作用域:页面任何位置都可以访问

函数作用域:只能在函数内部调用

变量使用规则:优先局部

缺点:全局不能使用局部的,解决:加return 千万不能对未声明的变量赋值--会全局污染

声明提前:

var function会提前到程序的顶部但是赋值留在原地
声明创建的函数会完整提前,直接量方式只有变量名提前
所以变量名和函数尽量不重复,先创建后使用

重载

函数自带的arguments对象
通过下标去获取传入的实参argument[i]
通过length获取了几个实参
判断argument的不同执行不同德操作

数组

创建一个变量保存多个数据,元素下标从0开始
创建:var arr=[数据]或者var arr=new array(数据)
获取数据:函数名[i]
添加/替换:数组名[i]=新数据
三大不限制:不限制类型,不限制个数,不限制下标越界

数据名.length:
获取数组倒数第n个元素:arr[arr.length-n]
在末尾添加元素:arr[arr.length]=新
删除倒数的元素:arr.length=n;

day05

DOM

通过id查找:
var elem=document.getEementById(id的值)、
通过标签查找:
var elems=document.getElementByTagName("标签名“)
注意:返回的是一个集合,集合不能直接操作
可以通过下标来操作元素或者遍历数组操作每一个元素
通过class查找:
var elems=document.getElementByClassName(”class名“)

关系网

通过关系查找要先确定一个元素才能使用
父亲:elem.parentNode
儿子:elem.Children
第一个儿子:elem.firstElementchild
最后一个儿子:elem.lastElementchild
前一个兄弟:elem.previousElementSibing
后一个兄弟:elem.nextElementSibing