前端05 /js基础

时间:2023-03-09 18:59:16
前端05 /js基础

前端05 /js基础

昨日内容回顾

  • css选择器的优先级

行内(1000) >  id(100)  >  类(10) > 标签(1) > 继承(0)
  • 颜色

rgb(255,255,255)
#000000-#FFFFFF
单词表示
rgba(255,255,255,0.5)(透明度)
  • 字体

font-family 设置"微软雅黑","宋体"
font-size 设置字体大小 默认的字体大小16px
font-weight bold粗体
  • 文本

text-align 对齐方式 left(默认) right center
text-decoration 字体的划线 none underline overline line-through
line-height 设置行高 字体会自动在行高内垂直居中
text-indent 缩进em或px单位
  • 背景

background-color :设置颜色
background-image :url('xxx.jpg')
background-repeat :no-repeat
background-position :水平位置 垂直位置 (left center right) (top center bottom)
background-attachment:fixed
background-size :调整背景图片的大小
background:颜色 背景图 是否重复 位置;
  • 边框

border-style:solid; 设置边框样式
border-color:颜色1 颜色2 颜色3 颜色4;
border-width:10px; 设置边框宽度
border: solid red 5px;
border-top-style:dotted;
border-top: solid red 5px;
border-radius:边框圆角
  • display

不显示不占位 :none
块级元素 : block
行内元素 : inline
行内块 : inline-block
  • 盒模型

content : width height 内容
padding : 5px 内边距
padding-top ...
border : 见上面
margin : 外边距
margin-left ...
上下的盒子会塌陷 : 取上下间距之间的最大值
不设置border的父子盒子也会塌陷
更多的描述兄弟之间的关系,如果是父子之间的关系用padding来描述
  • 浮动

float:left  right
浮动起来的盒子会脱离标准文档,且不在独占一行
父盒子不能被子盒子撑起来
清除浮动 : clear:both
伪元素清除法:
clearfix:after{
content:'';
display:block
clear:both;
}
overflow:hidden scroll auto
  • overflow

溢出部分如何处理?
visible 默认 溢出了也会显示
hidden 溢出部分隐藏
auto scroll 溢出之后显示滚动条
  • 定位

position : relative absolute fixed
top:
left:
right:
bottom:
相对定位 : 相对自己原来的位置定位,还占据自己原来的位置
绝对定位 : 相对于有定位的父盒子/整个html界面的位置,不占据原来的位置
固定定位 : 相对浏览器窗口的(不独占一行,可以设置高和宽) 设置0的时候,不需要加px
  • z-index

表示的在页面上标签显示的先后顺序
1.值越大的越在前面显示
2.设置的值没有单位没有范围
3.浮动的盒子不能设置index
4.从父现象:父级的优先级不高,儿子的优先级再高也没用(父级标签设置的index小,儿子设置的index再大也没用)
  • 透明度opacity

opacity:0.5
是整个标签的透明度 opacity和rgba的区别:
opactiy是整个标签的透明度,rgba是单独给某个属性设置透明度

今日内容

1 javascript介绍

 能够处理逻辑
​ 可以和浏览器交互
​ 不够严谨
javascript包含:
ECMAscript js的一种标准化规范 标出了一些基础的js语法
DOM document object model 文本对象模型 主要操作文档中的标签
BOM browser object model 浏览器对象模型 主要用来操作浏览器

2 js引入和script标签

方式一:在html页写js代码
<script>
alert('hello,world')
</script>
方式二: 引入js文件
<script src="first.js"></script>

3 结束符和注释

结束符
; 是js代码中的结束符 单行注释
// alert('hello,world');
多行注释
/*多行注释*/

4 变量

变量名 : 数字\字母\下划线\$
创建变量的关键字var :var a = 1;
(a=1不会报错,但是设置的是全局变量)
创建变量的时候可以不指定数据类型
创建变量但不赋值 :var a; a创建出来就是一个undefined未定义

5 输入输出

弹出框alert
alert('hello') 弹出框中的内容是"hello"
弹出输入框
var inp = prompt('问句') 弹出输入框,输入的内容会被返回给inp
控制台输出
console.log(变量或值)

6 基础的数据类型

6.1 查看类型
typeof 变量;
typeof(变量);
6.2 数字number
整数 var a = 1
小数 var b = 1.237
保留小数 b.toFixed(2) //1.24
6.3 字符串String
var s1 = '单引号'
var s2 = '双引号都是字符串的表达方式'
6.4 string 类型的常用方法
属性 : length
方法:
.trim() 去空白
.trimLeft() 移除左边的空白
.trimRight() 移除右边的空白
a.concat('abc') a拼接'abc'串 ///字符串拼接:var c=a+b;
charAt(索引) 给索引求字符
indexOf(字符) 给字符求索引
indexOf(字符,n) 给字符求索引,从索引为n的数字开始往后找
slice(start,end) 顾头不顾尾,可以用负数,取子串
.toLowerCase() 全部变小写
.toUpperCase() 全部变大写
.split(',',2) 根据(第一个参数)分隔符切割,切前多少个结果(python中后面的数字是从第二个','进行分割)
6.5 boolean 布尔值
true  : [] {}
false : undefined null NaN 0 ''
6.6 null 空和undefined未定义
null 表示空  boolean值为false
undefined 没有定义 创建变量但是不赋值 boolean值为false null表示值是空,一般在需要指定或清空一个变量时才会使用,如 name=null; undefined表示当声明一个变量但未初始化时,该变量的默认值是undefined。还有就是函数无明确的返回值时,返回的也是undefined。
var a; -- undefined null表示变量的值是空,undefined则表示只声明了变量,但还没有赋值。
6.7 object类型
var a = 'xx';
var b = new String('oo');

7 内置对象类型

7.1 数组 Array
创建(object类型):
var arr = ['a','b','c'];
var arr2 = new Array();
typeof arr\arr2 -->object
索引操作:
arr[0] 查看
arr2[0] = 'alex' 赋值操作
Array常用的属性和方法
属性:length(数组长度)
方法:
.push(ele) 尾部追加元素
.pop() 删除尾部的元素
示例:
var a = [11, 22, 33, 44];
var b = a.pop();
结果:
a -- [11, 22, 33]
b -- 44 .unshift(ele) 头部插入元素
示例:
 var a = [11, 22, 33];
a.unshift('aa')
a --  ["aa", 11, 22, 33] .shift() 头部移除元素
示例:
var a = ["aa", 11, 22, 33];
a.shift() -- 'aa'
a -- [11, 22, 33]; .slice(start, end) 切片
示例:
var b = a.slice(0,3);
b -- [11, 22] .reverse() //在原数组上改的 反转
示例:
var a = [11,22,33];
a.reverse()
a -- [33,22,11] .join(seq) //a1.join('+'),seq是连接符 将数组元素连接成字符串
示例:
var a = ['aa','bb','cc'];
var b = a.join('_');
b -- "aa_bb_cc"; .concat(val, ...) //连个数组合并,得到一个新数组,原数组不变 连接数组
示例:
var a = ["aa", "bb", "cc"];
var b = [11,22];
var c = a.concat(b);
c -- ["aa", "bb", "cc", 11, 22]; .sort() //排序
示例:
var a = [12,3,25,43];
对a进行升序排列:
1 定义函数
function sortNumber(a,b){
return a - b
};
2 var b = a.sort(sortNumber)
b -- [3, 12, 25, 43]
sort 规则:
如果想按照其他标准进行排序,就需要提供比较函数,也就是自己提供一个函数提供排序规则,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。 .splice() //参数:1.从哪删(索引), 2.删几个 3.删除位置替换的新元素(可多个元素) 删除元素,并向数组添加新元素。
示例:
var a = ['aa','bb',33,44];
单纯删除:a.splice(1,1)
a -- ["aa", 33, 44] 删除在替换新元素:
var a = ["aa", 33, 44];
a.splice(0,2,'hello','world');
a --  ["hello", "world", 44];
7.2 自定义对象(相当于python字典)
索取值
var a = {'name': 'alex','age' :48};
a['age']; -- 48
a.age; -- 48 键可以不用加引号(会自动处理成字符串)
[]中括号取值必须加引号

8 类型查询

前端05 /js基础

9 数据类型之间的转换

string --> int
parseInt('123') //123
parseInt('123abc') //123
parseInt('abc123') //NaN
parseInt('abc') //NaN not a number
string --> float
parseFloat('1.233')
float/int --> String
var num = 123
String(123)
var str = num.toString()
任意类型 --> Boolean
Boolean(数据) 字符串和数字相加 --> 字符串
字符串和数字相减 --> 数字

10 运算符

10.1 赋值运算符
= += -= *= /= %=

示例:
n += 1其实就是n = n + 1
10.2 比较运算符
> < >= <=
== != 不比较类型
=== !== 比较类型和值(常用)
==(弱等于)
===(强等于) 示例:
var a = 11;
var b = '11';
a == b -- true
a === b; -- false
10.3 算数运算符
+ - * / % ** 

++ --
var a = 1
undefined
var b = a++ // a=2 b=1(先进行逻辑,再进行自加1)
var c = ++a // a=3 c=3(先进行自加1,再进行逻辑) i++,是i自加1,i--是i自减1 i++的这个加1操作优先级低,先执行逻辑,然后再自加1,而++i,这个加1操作优先级高,先自加1,然后再执行代码后面的逻辑 示例:
var a = 100;
a++;或者++a; -- 101 a自增1 a++和++a的区别,示例:
var a = 102;
a++ == 102; -- true
a -- 103;
++a == 103; -- false
a -- 104;
10.4 逻辑运算符
&& 逻辑与  ||逻辑或  !逻辑非
true && true //true
true || false //true
!true //false

11 流程控制

特点:
所有的代码块都是用{}标识的
所有的条件都是用()标识的
11.1 条件判断
11.1.1 if语句
if (true) {
//执行操作
}else if(true){
//满足条件执行
}else if(true){
//满足条件执行
}else{
//满足条件执行
}
11.1.2switch切换(case语句)
    var err_type = 'info'
switch(err_type) {
case 'warining':
console.log('警告');
break;
case 'error':
console.log('错误');
break;
default:
console.log('没错')
} 示例:
var a = 1;
switch (a++){ //这里day这个参数必须是一个值或者是一个能够得到一个值的算式才行,这个值和后面写的case后面的值逐个比较,满足其中一个就执行case对应的下面的语句,然后break,如果没有加break,还会继续往下判断
case 1:
console.log('等于1');
break;
case 3:
console.log('等于3');
break;
default: case都不成立,执行default
console.log('啥也不是!') }
11.2 循环语句
11.2.1 while
var i = 1; //初始化循环变量
while(i<=9){ //判断循环条件
console.log(i);
i = i+1; //更新循环条件
} 示例:
var i = 0;
var a = 10;
while (i < a){
console.log(i);
if (i>5){
continue;
break;
}
i++;
};
11.2.2 for
for (var i=0;i<10;i++) {  //就这么个写法,声明一个变量,变量小于10,变量每次循环自增1,for(;;){console.log(i)};这种写法就是个死循环,会一直循环,直到你的浏览器崩了,就不工作了
console.log(i);
}
循环数组:
var l2 = ['aa','bb','dd','cc']
方式1
for (var i in l2){
console.log(i,l2[i]);
}
方式2
for (var i=0;i<l2.length;i++){
  console.log(i,l2[i])
} 循环自定义对象:
var d = {aa:'xxx',bb:'ss',name:'小明'};
for (var i in d){
console.log(i,d[i],d.i) //注意循环自定义对象的时候,打印键对应的值,只能是对象[键]来取值,不能使用对象.键来取值。
}
可以循环自定义对象(在for循环内点不可以取值)
11.2.3 三元运算符
var 结果 = boolean表达式 ? 为true返回的值:为false返回的值
var a=10;
var b=11;
var c=a>b ? a:b;

12 函数

function 函数名(参数){
函数体
return 返回值
}
函数名(参数)
//注意 : 传递的参数可以和定义的个数不一样,但是不要这么写
// 返回值只能有一个
一个函数体内的变量在另一个函数里边是不能使用的
//arguments伪数组
function add(){
console.log(arguments);
}
add(1,2,3,4) function add(a,b){
console.log(arguments);
}
add(1,2,3,4)
12.1 匿名函数
var add = function(){
console.log('hello,world');
}
//add()调用
12.2 自调用函数(自执行函数)
(function(a,b){
console.log(a,b)
})(1,2)

13 函数的全局变量和局部变量

局部变量:

	在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。

全局变量:

	在函数外声明的变量是*全局*变量,网页上的所有脚本和函数都能访问它。

变量生存周期:

    JavaScript变量的生命期从它们被声明的时间开始。

    局部变量会在函数运行以后被删除。

    全局变量会在页面关闭后被删除。

14 作用域

首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层。

var city = "BeiJing";
function f() {
var city = "ShangHai";
function inner(){
var city = "ShenZhen";
console.log(city);
}
inner();
}
f(); var city = "BeiJing";
function Bar() {
console.log(city);
}
function f() {
var city = "ShangHai";
return Bar;
}
var ret = f();
ret(); 闭包:
var city = "BeiJing";
function f(){
var city = "ShangHai";
function inner(){
console.log(city);
}
return inner;
}
var ret = f();
ret();

15 面向对象

function Person(name){
this.name = name;
}; var p = new Person('taibai'); console.log(p.name); Person.prototype.sum = function(a,b){ //封装方法
return a+b;
}; p.sum(1,2);
3

16 date对象

//方法1:不指定参数
var d1 = new Date(); //获取当前时间
console.log(d1.toLocaleString()); //当前2时间日期的字符串表示
//方法2:参数为日期字符串
var d2 = new Date("2004/3/20 11:12");
console.log(d2.toLocaleString()) 常用方法
var d = new Date();
使用 d.getDate()
//getDate() 获取日
//getDay () 获取星期 ,数字表示(0-6),周日数字是0
//getMonth () 获取月(0-11,0表示1月,依次类推)
//getFullYear () 获取完整年份
//getHours () 获取小时,从0开始
//getMinutes () 获取分钟,从0开始
//getSeconds () 获取秒,从0开始
//getMilliseconds () 获取毫秒
//getTime () 返回累计毫秒数(从1970/1/1午夜),时间戳