javaScript基础(3)

111dong / 2023-08-02 / 原文

string 字符串
1.字符串必须用‘ ’ 或者 “ ”,引起来的一段字符内容,在表示字符串的时候,不能在双引号表示的字符串中使用双引号
2.字符串可以是空的字符串
3.字符串双引号或者单引号里可以嵌套另一种字符串的引号
4.空格在字符串里是占位的
var sty1 = “ 123 123”
5.获取字符串的长度==length
var str2 = “1234567890”
consol.log(str1,str2.length)
6.\n特殊字符表示换行
var n1 = “你好\n啊”
7.如果就是需要使用相同的引号嵌套,需要使用转义符’用 \ 表示
var n2 = ”开\"始\"了“
特殊数值
lnfinity 无穷大 当数值超过浮点数
Number 数字类型
数字类型就是在程序中用来表示数字的一种类型包含了(小数,整数,正数,负数)
在数字类型中还包含了几个数字常用量,nan,Number.MAX_VALUE,Number.MIN_VALUE,Infinity
boolean布尔值
布尔值在程序中用来表示真假对错,只有两个特殊的值,true、false
Undefined:
只有一个值的特殊数据类型,只有一个值Undefined表示未定义的意思,一般变量未赋值的时候默认值就是undefined,在变量定义之前访问会有一个变量提升的特性访问的结果也是undefined
Nul:
null是空对象的意思,不占据计算机的存储空间,表示啥也没有
Array 数组:
数组是使用[中括号表示的值,数组中可以有多个值,多个值和值之间使用逗号进行分割,数组中每一个值可以是任意的其他数据类型,在使用数组的时候可以使用·数组[index]·的方式获取到对应位置的那个值
Object:对象:数据转换
对象是使用表示的一组值,对象中可以包含任意属性,他的表现形式是以键值对的形式出现,{·名字:值,名字:值·小,对应的属性通过·对象属性名 进行获取 或者·对象[属性名]·获取
数据转换:
在js中可以使用typeof 来检测一个位置数据的数据类型
typeof null ,typeof [] , typeof {} ,返回的都是‘object’
 
js中所有类型都有原始对象,都是由对应的对象进行创建的
判断数据类型的方式
1.使用typeof关键字,进行判断,但是typeof无法区分0bject、Null、Array
2.读取constructor 【康斯chua可特尔】 看constructor是否指向对应的构造函数Number,Array,0bject,Boolean, String),但是null和undefined没有constructor
3.跨原型调用tostring方法,bject.prototype.tostring.call(标识符 或者 数据)返回该值的对象描述字符串
 
+号运算符有两个计算功能数值求和,字符串拼接,在js里要是和字符串相加都会变成字符串
数据类型的转换 《强制类型转换》和 《隐式类型转换》
其他类型如何转换为字符串
1.通过string方法进强制转换
2.通过调用 数据.tostring 方法进行转换,但是null和undefined没有tostring方法
3.+号会把另一个非字符串的值转换为字符串
4.数字有几个特殊的转换字符串方法
4.1toFixed() 能够把数值转换为符串,并显示小数点后的指定位数。
4.2 toExponential(length)可以将数字转换为科学记数法的表示方式
4.3toPrecision()·可以将数字转换为科学记数法的表示方式
转换结果:
true => 'true'
false => 'false'
1 => '1'
null => 'null'
undefined => 'undefined'
[1,2,3] => '1,2,3'
{} => '[Object object]'
其他类型转数字的方式:
1.通过number(数据)方法进行强制转换
2.通过parseint(数据) 方法进行强制转换,一般用于字符串转数字,返回值都是nan或者整数
3.通过parseFloat(数据)可以识别小数点
4.除了和字符串进行加号运算其他情况均会吧另一个数字转换成数字
转换结果:
true=> 1
false=>0
'12'=>12
'' => 0
'12a'=>NaN
null=>0
undefined=>NaN
[1,2,3]=>·NaN
[]=>0
[1]=>1
{} => NaN
转布尔值的方式:
1.通过boolean(数据)方法进行强制转换
2.在条件语句中会做隐式转换
转换结果:
1=>true
0=>false
'12'=>true
'' => false
'12' => true
null => false
undefined=>false
[1,2,3]=>true
[] => true
[1]>true
{} => true
NaN => false
作用域与予解析
使用var·声明变量和不使用var声明变量的区别?
1、使用var·声明的变量是局部变量、不使用var声明的变量是全局变量
2、在环境执行的时候降var声明的变量提升至作用域的顶部、不使用var声明的变量不回提升
全局和局部变量的区别:
1、全局变量可以在任意作用中都可以访问到,局部作用域只能是当前作用域和当前作用域的子孙作用域中访问
2、全局变量会存储数据至网页关闭,局部变量是当前作用域执行完毕后立即自动销毁
作用域链:
1.在i5中作用域和作用域是可以嵌套的,在某一个作用域中访问一个变量,会先从当前作用域开始查找如果没有去上层作用域中查找
2.上层没有在上层,这样逐层查找找到全局作用域为止,找不到就抛出一个未定义的错误,这样的查找的方式就叫《作用域链》
 
字符串操作方法:
* length 字符串中字符长度
* trim() 清除字符串前后空格
* charAt(index) 返回对应位置的字符串
* indexOf(str) 查询某个子字符串,在当前字符串中的位置,如果没有就返回-1
* lastIndexOf(str)
* substr(startIndex, length) 截取字符串中从某一个位置开始, 截取几个 从start位置开始(索引号),length取的个数 重点
* substring(start, end) 从start位置开始,截取到end位置,end取不到 基本和slice相同,但是不接受负值
* slice(startIndex, endIndex) 截取字符串中从某一个位置开始,到某一个位置的前一个结束
* replace(被替换的字符,替换为的字符) 替换字符,只会替换第一个 敏感词
* concat(str1, str2, str3, ...) 将多个字符串合并成一个新字符串 用于连接俩个或多个字符串。拼接字符串,等效于+, +更常用
* split() 将字符串以特定的字符分割成数组,接受一个参数(分割符),返‘【 回通过字符串分割后的一个数组
* toUpperCase() // 将字母转换大写
* toLowerCase() // 将字母转换小写
数组:
* 改变原数组
* push() 向数组的结尾添加一个或者多个新的数组元素 注意会修改原数组
* pop() 向数组的结尾删除一个数组元素 无参数,修改原数组
* unshift() 向数组的开头添加一个或者多个新的数组元素 注意会修改原数组
* shift() 向数组的开头删除一个数组元素 无参数,修改原数组
* reverse() 颠倒数组中元素的顺序,无参数 会改变原来的数组,返回新数组
* sort() 排序 对数组的元素进行排序 会改变原来的数组,返回新数组
* splice() 可以实习数组的添加、修改、删除、替换等等
* 接受多个参数:
* 1、开始位置
* 2、删除个数
* 3n、新元素
* 返回被删除的数组元素
*
* 转换方法
* toString() 将数组转换为字符串,数组项和项直接用逗号进行分割
* join() 将数组转换成以制定符号分割的字符串
*
* 查询方法
* indexOf(str) 查询某个子项,在当前数组中的位置,如果没有就返回-1,如果有返回对应的index索引
* lastIndexOf(str)
* slice(startIndex, endIndex)
*
* 返回新数组
* concat() 合并多个数组为一个数组
*
Math: 数字
* min 最小
* max 最大
* abs 绝对值 隐式转换 字符串型的数字
* pow 返回 x 的 y 次幂
* random 随机的
* floor 向下取整
* ceil 向上取整
* round 四舍五入
Date对象
 
DOM对象
通过id名字获取
var box=document.getElementById( ' box')
var ul= document.getElementsByClassName( 'news-list')
var lis =document.getElementsByTagName( li')
var names = document.getElementsByName('aa')
通过选择器查询匹配的所有元素
var fristListLis = document.querySelectorAll('.listli')
通过选择器查询匹配的第一个元素
fristListLi= document.querySelector(',list li')
事件是由三部分组成:事件源、事件类型、事件处理程序,也称为事件三要素
事件源: 事件被触发的对象
事件类型:如何触发,什么事件,比如鼠标点击、鼠标经过、键盘按下
事件处理程序: 通过一个函数赋值的方式完成
   改变元素内容:
element.innerText
从起始位置到终止位置的内容,但它去除html标签,同时空格和换行也会去掉
element.innerHTML
起始位置到终止位置的全部内容,包括html标签,同时保留空格和换行
innerText 与 innerHTML的区别:
1. innerText不识别标签,去除换行和空格
2. innerHTML识别标签,保留空格和换行
3. 这俩个属性是可读写的,可以获取元素里面的内容
节点
在document文档中的一切都是节点,常见的节点类型(文本节点、元素节点、注释节点、属性节点)
none
nodeType的属性,用来区分节点类型
nodeType===1 元素节点
nodeType ===2 属性节点
nodeType===3 文本节点
nodeType===8 注释节点
nodeName属性,返回节点名称
元素节点nodeName 返回大写标签名
文本节点nodeName 返回 #text
注释节点nodeName 返回 #comment
属性节点·nodeName ·返回属性的名称
nodeValue属性,返回节点值
元素节点-nodeValue 元素和文档节点返回null
文本节点nodeValue 返回文本的内容
注释节点nodeValue 返回注释的内容
属性节点nodeName返回属性的值
节点元素的查找方法
node.parentNode()·父节点
node.parentElement()父元素
node.childNodes()子节点列表 (文本节点,元素节点,注释节点)
node.children·子元素列表(元素节点)
node.firstChild()·第一个子节点
node.firstElementChild()第一个子元素
node.lastChild()最后一个子节点
node.lastElementChild()最后一个子元素
node.nextSibling()下一个兄弟节点
node.nextElementSibling()下一个兄弟元素
node.previousSibling()上一个兄弟节点
node.previousElementSibling()上一个兄弟元素
节点元素增删改
document.createTextNode('文本内容)创建文本节点
document.createElement(标签名')创建元素节点
父节点.appendChild(节点)·给当前父节点的子节点结尾追加一个子节点父节点.insertBefore(child,指定元素)在当前父节点中的某一个子节点之前插入一个节点
父节点.removeChild(子节点)·在当前父节点中删除一个指定的节点
node.cloneNode()··克隆一个节点,复制一个