黑马程序员前端JavaScript入门到精通全套视频教程,javascript核

前端第35期:DAY 1 -P1-P19
学习笔记:
模板字符串
1.``(反引号)
2.英文输入1旁边的那个键
3.拼接时用${}包裹住变量:${变量名}
eg:document.write(`你好,我是${name},来自${address},${age}岁`)
练习:

布尔型、null和undefined

通过typeof关键字检测数据类型
两种语法形式:(常用第一种)

练习:

隐式转换

eg:


综合案例:(***特别注意反引号)

常见错误:
let或者const不允许多次声明同一个变量
const声明常量,常量不允许被重新赋值

prompt获取到的是字符型,会出现字符串相加的情况
prompt如果要相加,记得要转为数字型,可以利用+最简单:(

)

学习心得:感觉都挺熟悉,入手挺快。
前端第35期:DAY 2 -P20-P34
学习笔记:
算术运算符:也叫数学运算符,主要包括加、减、乘、除、取余(求模)等
注:在计算失败时,显示的结果是 NaN
只有变量能够使用自增和自减运算符

*** 先&&后||
逻辑运算符优先级: !> && > ||
if 多分支语句
使用场景: 适合于有多个条件的时候
三元运算符(三元表达式)
条件 ? 表达式1 : 表达式2
switch语句
switch case语句一般用于等值判断, if适合于区间判断
switch case一般需要配合break关键字使用
断点调试
作用:帮助更好的理解代码运行,更快找到bug
浏览器打开调试界面
1. 按F12打开开发者工具
2. 点到源代码一栏 ( sources )
3. 选择代码文件
断点:在某句代码上加的标记就叫断点,当程序执行到这句有标记的代码时会暂停下来
(没操作明白)明天继续看一遍
break 中止整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用(提高效率)
continue 中止本次循环,一般用于排除或者跳过某一个选项的时候
while(true) 来构造“无限”循环,需要使用break退出循环。(常用)
for(;;) 也可以来构造“无限”循环,同样需要使用break退出循环。
综合案例

作业



综合案例变形

有点奇怪不太懂(挠头)↓

学习心得:有些地方不是太明白,明天继续,仔细搞清楚弄明白。
前端第35期:DAY 3 -P35-P49
学习笔记:
注:for 循环和 while 一样,如果不合理设置增量和终止条件,便会产生死循环。
循环嵌套
注:外层循环循环一次,里层循环循环全部
多个数据可以用数组存起来,然后放到一个变量中,方便管理,数组单元之间使用英文逗号分隔。
操作数组
1. push 动态向数组的尾部添加一个单元
2. unshit 动态向数组头部添加一个单元
3. pop 删除最后一个单元
4. shift 删除第一个单元
5. splice 动态删除任意单元
作业:


学习心得:今天的有些以前没接触过,有点新奇,学的有点慢,明天量稍微减一点,学扎实一点,加油!
前端第35期:DAY 4 -P50-P53
学习笔记:
函数
声明(定义)一个完整函数包括关键字、函数名、形式参数、函数体、返回值5个部分

调用
声明(定义)的函数必须调用才会真正被执行,使用 ()调用函数
参数
通过向函数传递参数,可以让函数更加灵活多变,参数可以理解成是一个变量。
注: 多个数据用逗号隔开
arr (传上去是数组)

记得给个空值不然报错

形参和实参
形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数)
实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数)
形参可以理解为是在这个函数内声明的变量(比如 num1 = 10)实参可以理解为是给这个变量赋值
开发中尽量保持形参和实参个数一致

学习心得:封装后调用方便了好多,不用一直复制真好。以前的人怎么想到的真牛
前端第35期:DAY 5 -P53-P55
学习笔记:
返回值
函数的本质是封装(包裹),函数体内的逻辑执行完毕后,想获得函数内部逻辑的执行结果,要通过 return 关键字,将内部执行结果传递到函数外部,这个被传递到外部的结果就是返回值。
注:函数内部只能出现1 次 return,并且 return 下一行代码不会再被执行,所以return 后面的数据不要换行写
return会立即结束当前函数
函数可以没有return,这种情况默认返回值为 undefined
学习心得:学习了return的使用情况,及其一些注意事项
前端第35期:DAY 6 -P56-P58
学习笔记:
两个相同的函数后面的会覆盖前面的函数

实参的个数和形参的个数可以不一致
如果形参过多 会自动填上undefined
如果实参过多 那么多余的实参会被忽略 (函数内部有一个arguments,里面装着所有的实参)


作用域
作用域的不同,变量可以分为全局变量和局部变量
全局作用域
作用于所有代码执行的环境(整个 script 标签内部)或者一个独立的 js 文件。处于全局作用域内的变量,称为全局变量
局部作用域
作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域。处于局部作用域内的变量称为局部变量
变量有一个坑, 特殊情况:
如果函数内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐
但是有一种情况,函数内部的形参可以看做是局部变量。
变量的访问原则:在能够访问到的情况下 先局部, 局部没有在找全局(就近原则)
学习心得:知道了形参和实参的个数可以不一致,晓得了变量有个坑,以及函数内部的形参可以看做是局部变量。变量的访问原则
前端第35期:DAY 7 -P59-P67
学习笔记:
函数表达式
将匿名函数赋值给一个变量,并且通过变量名称进行调用

立即执行函数
注意: 多个立即执行函数要用 ; 隔开,要不然会报错

无需调用,立即执行,其实本质已经调用了
逻辑运算符里的短路
短路:只存在于 && 和 || 中,当满足一定条件会让右边代码不执行

转换为Boolean型
‘’、0、undefined、null、false、NaN 转换为布尔值后都是false, 其余则为 true


隐式转换:
1. 有字符串的加法 “” + 1 ,结果是 “1”
2. 减法 - (像大多数数学运算一样)只能用于数字,它会使空字符串 "" 转换为 0
3. null 经过数字转换之后会变为 0
4. undefined 经过数字转换之后会变为 NaN
对象
对象是一种数据类型。无序的数据的集合
特点:
无序的数据的集合;可以详细的描述描述某个事物
对象有属性和方法组成
属性
数据描述性的信息称为属性,如人的姓名、身高、年龄、性别等,一般是名词性的

多个属性之间使用英文 , 分隔
属性名和值,它们之间使用英文 : 分隔
属性名可以使用 ""或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等

感觉和C语言中的结构体好像
声明对象

1.对象查语法:
对象名.属性
(查的另外一种写法)
对象[‘属性’] 方式, 单引号和双引号都可以

2.对象改语法:
对象名.属性 = 新值
3.对象增语法:
对象名.新属性名 = 新值
4.对象删语法:(了解)
delete 对象名.属性
学习心得:知道了立即执行函数,短路,还有那些情况转布尔型后是false,还有属性一些语法
前端第35期:DAY 8 -P68-P69
学习笔记:
方法:
在内部是方法,在外部是函数

1. 方法是由方法名和函数两部分构成,它们之间使用 : 分隔

2. 多个属性之间使用英文 , 分隔

3. 方法是依附在对象中的函数
4. 方法名可以使用 "" 或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等
调用方法:
(错误的):


(正确的)

遍历对象
用for in遍历对象
一般不用这种方式遍历数组,主要是用来遍历对象

for in语法中的 k 是一个变量, 在循环的过程中依次代表对象的属性名
由于 k 是变量, 所以必须使用 [ ] 语法解析
注意: k 是获得对象的属性名, 对象名[k] 是获得 属性值

学习心得:晓得了调用方法不用再写console log了,直接写对象名.方法名。遍历对象要用for in,打印时,k是属性名,并且是‘属性名’,所以需要 对象名【属性名】 eg:console log(obj[k]),着重记忆
前端第35期:DAY 9 -P70-P71
学习笔记:
遍历数组对象
用的传统的for

内置对象:
Math对象包含的方法有:
random:生成0-1之间的随机数(包含0不包括1)
0-10之间的随机数
eg: Math.floor(Math.random() * (10 + 1))
ceil:向上取整

floor:向下取整

round: 四舍五入

max:找最大数

min:找最小数

pow:幂运算

abs:绝对值

sqrt: 平方根

声明一个空的对象(没有任何属性,也没有任何方法),动态追加属性

学习心得:遍历数组对 象用传统的for,遍历数组不推荐用for in
前端第35期:DAY 10 -P72-P77
学习笔记:
random:生成0-1之间的随机数(包含0不包括1)【0,1)
eg: 0-10之间的随机整数[0,11)
Math.floor(Math.random() * (10 + 1))
随机抽数组中的一个元素

N-M之间的随机数


例子:抽取名字,删除抽中的名字

回忆splice, splice(起始位置下标,删除几个元素)
例子:猜数字

用while循环来不断地循环,提示输入数字
限制猜的次数,用for来实现

基本数据类型和引用数据类型


感觉和指针有点像
学习心得:学会了怎么做点名,明天开web APIs,加油
前端第35期:DAY 12 -P78-P80
学习笔记:
变量声明有三个 var let 和 const
const 优先,尽量使用const
有了变量先给const,如果发现它后面是要被修改的,再改为let
const 声明的值不能更改,而且const声明变量的时候需要里面进行初始化
const声明的变量,里面存的不是值,是地址
建议数组和对象使用 const 来声明
DOM (文档对象模型)、BOM(浏览器对象模型)
DOM作用:
操作网页内容,可以开发网页内容特效和实现用户交互
DOM树:
将 HTML 文档以树状结构直观的表现出来,我们称之为文档树或 DOM树
作用:文档树直观的体现了标签与标签之间的关系
DOM对象:
浏览器根据html标签生成的 JS对象(DOM对象)
DOM的核心就是把内容当对象来处理
document :
是 DOM 里提供的一个对象
网页所有内容都在document里面
学习心得:之前声明用的var,前几天学用let,现在知道了用const最好(变量不再变的情况下),开始学DOM了,近段时间好忙,昨天都没打卡,改天再补上吧
前端第35期:DAY 13 -P81
学习笔记:
获取DOM元素
根据css选择器来获取DOM元素(重点)
选择匹配的第一个元素
document.querySelector('css选择器')
参数:包含一个或多个有效的css选择器 字符串
返回值:css选择器匹配的第一个元素,一个HTMLElement对象。如果没有匹配到,则返回null。


nav一定要加‘#’

获取ul 里面的一个小li
选择匹配的多个元素
document.querySelectorALL('css选择器')
参数:包含一个或多个有效的css选择器 字符串
返回值:css选择器匹配的NodeList 对象集合

这个得到的是一个伪数组:
有长度有索引的数组,但是没有pop() push() 等数组方法
想要得到里面的每一个对象,则需要遍历(for)的方式获得
注:就算只有一个元素,通过querySelectAll()获取过来的也是一个伪数组,里面只有一个元素

注意:小括号里面的参数写css选择器,必须是字符串,也就是必须加引号
其他获取DOM元素方法

学习心得:学了根据css选择器来获取DOM元素,学会了选择第一个和多个元素的方式querySelector 和querySelectorAll
前端第35期:DAY 14 -P82
学习笔记:
DOM对象都是根据标签生成的,所以操作标签,本质上就是操作DOM对象。
通过修改 DOM 的文本内容,动态改变网页的内容
修改DOM元素:

元素.innerText属性只识别文本,不能解析标签
将文本内容添加/更新到任意标签位置

元素.innerHTML属性 能识别文本,能够解析标签
将文本内容添加/更新到任意标签位置
会解析标签,多标签建议使用模板字符
一般多数情况下选择用元素.innerHTML
学习心得:知道了怎么操作修改DOM元素,用元素.innerHTML最好
前端第35期:DAY 15 -P83-P84
学习笔记:
通过 JS 设置/修改标签元素属性,比如通过 src更换 图片
通过JS来设置/修改标签元素属性
对象.属性=值
注:先获取再修改

直接能过属性名修改,最简洁的语法
通过修改行内样式 style 属性,实现对样式的动态修改
对象.style.样式属性=值

注:修改时,值不要忘了单位
任何标签都有 style 属性,通过 style 属性可以动态更改网页标签的样式,如要遇到 css 属性中包含字符 - 时,要将 - 去掉并将其后面的字母改成大写
或者说 多组单词的采取小驼峰命名法
例如:background-color 采取backgroundColor
因为body是唯一的标签,可直接写document.body.style

学习心得:
学会了通过JS来修改标签元素属性和通过style来操作css
前端第35期:DAY 17 -P85-P86
学习笔记:
用className来修改样式

由于class是关键字,所以使用className去替代
注意:className是使用新值换旧值,会覆盖掉之前引用的类名

如果两个都想要,那就都写上,例如上图,既想要nav又想要box
使用className可以同时修改多个样式,简洁许多
注意:直接使用className赋值会覆盖以前的类名
为了解决className容易覆盖以前的类名,我们可以通过classList方式追加和删除类名(常用)

在原先的类名上追加的


不用担心被覆盖掉了
删除和切换


经常还是用classList
学习心得:学了用className和classList来修改样式,通常还是用classList修改方便一点
前端第35期:DAY 18 -P87
学习笔记:
点击刷新,随机轮播图,确保图片和背景颜色以及下面的小圆点都会随之刷新
获取N~M的随机数

用parseInt来取整,例如2.1取整就是2, 2.9取整也是2,向下取整 后面就是获得随机数了


随机sliderData数组里的一个对象打印到控制台上
然后就是将相应的数据渲染到标签里面

获取图片路径
随后修改图片路径

对象.url修改 就是把sliderData数组里抽取的对象的url赋给前面
学习心得:前面学的有点忘了啊,改天需要抽个时间回顾一下,时间真不够用啊
前端第35期:DAY 19 -P88
学习笔记:

注意:此处需要加点,和以前css的写法相同
修改图片下方的文本,使其跟随图片改变而改变,首先先获取文本p

然后再用sliderData数组里的title和图片一样的随机赋给p.innerHTML来修改
背景颜色的修改和文本的修改大差不差,都是先获取,然后将sliderData数组里的color和图片一样的随机赋给背景颜色来修改

让小圆点随着刷新和图片一样改变

一样也是先获取,之后用classList.add来为li添加active这个类,来让小圆点高亮显示

classList最为重要
学习心得:小圆点这块有点不太通,不过知道了classList的添加类,是会了
前端第35期:DAY 20 -P89
学习笔记:
获取表单的值,用 表单.value
注:innerHTML得不到表单内容

设置表单的值,将其设置成password的,点一下就是text,点一下就是password


操作表单元素属性
添加就有效果,移出就没,一律使用布尔值表示
disabled,checked,selected
checked多选框用

checked只能接受布尔值,所以会有隐式转换,会选中,但不提倡

这个checked有的话默认为true,没有为false
ipt.checked=true是用js的方式勾选上多选框

disabled是禁用 为true时,按钮就不能点了

属性和值相同,可以省略,只写一个
学习心得:知道了disabled和checked的使用,还有属性和值两个相同可以省略写
前端第35期:DAY 11 -P90 (补卡)
学习笔记:
标准属性:标签天生自带的属性 比如class id title等, 可以直接使用点语法操作比如:disabled、checked、selected
自定义属性:html5中推出的
在标签上一律以data-开头
在DOM对象上一律以dataset对象方式获取

dataset获取全部,以集合的形式

如果只需要其中一个,那么后面 dataset.属性 就行

学习心得:知道了怎么写自定义属性,data-XXX XXX自己起。dataset获取全部,需要一个则后面加上 .属性
前端第35期:DAY 16 -P91 (补卡)
学习笔记:
定时器--间歇函数
使用定时器函数重复执行代码
开启定时器
setInterval(函数,间隔时间)
每每隔一段时间调用这个函数
间隔时间单位是毫秒(注:1秒=1000毫秒)
第一种写法

第二种写法:(注:函数直接写函数名,不要加小括号)

加小括号的(也能使用,但极为少见,不建议使用)

定时器返回的是一个id数字

关闭定时器
let 变量名=setInterval(函数,间隔时间)
clearInterval(变量名)
先let 变量获得定时器返回的id数字,然后用clearInterval()关闭定时器

eg:

学习心得:
学会了使用定时器,知道怎么开启关闭,以及一些注意事项
前端第35期:DAY 21 -P92-P93
学习笔记:
button是个特殊的双标签,用value不能获得表单的值,得用innerHTML才行


选择器选的时候要加点,remove不用加点

无缝衔接位置一定要放在i++后面


学习心得:设置小圆点的时候要注意移除上一个的高亮的类名,然后为现在当前的小圆点添加类。button用innerHTML来获取值。轮播图自动从头播放的if设置要紧挨着放在i++后面