初步了解JaveSctript
标题 |
内容 |
说明 |
结构 |
HTML |
网页元素的结构和内容 |
表现 |
CSS |
网页元素的外观和位置,包括版式和颜色、大小 |
行为 |
js |
网页模型的定义和交互 |
- Javascript是一种编程语言,可以用来创建动态更新的内容,控制多媒体,制作图像动画等等实现人机交互效果,简单来说,可以通过简短的代码来实现神奇的功能。
- JavaScript的书写方式,规范是script标签写在body上面
- 行内JavaScript
- 内部JavaScript
- 外部JavaScript
- 结束符
- 代表语句的结束,用英文的
;
表示。
- 可写可不写。
- 换行符(回车) 会被识别成结束符,因此在实际开发中有许多人主张书写JavaScript代码时,省略结束符。
- 但是为了统一风格,要写结束符就每句都写,要么就每句都不写。
- JavaScript输入输出语句
- 输出和出入可以理解为人和计算机的交互,用户通过键盘、鼠标等向计算机输入信息,计算机处理后再展示给用户,这便是一个输入和输出的过程。
- 输出语句
ducoment.write("要输出的内容")
- 向body内输出内容
- 如果输出的内容是标签,也会被解析成网页元素
alert(要输出的内容)
- console.log(要输出的内容)
- 输入语句
变量
- 目标:理解变量是计算机存储数据的容器,掌握变量的声明方式
变量是什么
- 白话:变量就是一个盒子。
- 通俗:变量就是计算机存储数据的容器,它可以让计算机有记忆。
变量的基本使用
变量的声明方式
变量的本质
- 内存:计算机中存储数据的地方,相当于一个空间。
- 变量:是程序在内存中申请的一块拿来存放数据的小空间。
变量的命名规则与规范
规则:必须遵守,不遵守会爆错
- 不能使用关键字。
- 关键字:有特殊含义的字符,JavaScript内置的一些英语词汇。例如:let var if for等等。
- 只能用下划线、字母、数字、$组成,且数字不能开头。
- 字母严格区分大小写,如Age和age是不同的变量。
规范:建议,不遵守不会报错,但是不符合业内通识
- 起名要有意义。
- 遵守驼峰式命名
- 第一个单词的首字符小写,后面每个单词首字母大写。例如userName
数据类型
- 计算机世界完事成物都是数据。
- 计算机程序可以处理大量的数据,为了方便数据的管理(用途不同),将数据分成了不同的类型
数据类型 |
作用 |
表示形式 |
例 |
String(字符串) |
表示文字内容 |
英文的单引号或者双引号包起来 |
‘hello’、“world” |
Number(数字) |
表示数字内容 |
直接写数字 |
10,20 |
Boolean(布尔) |
表示对立的两种状态,真或者假,对或者错等等 |
true 和 false |
ture、false |
undefined(未定义) |
表示未定义 |
undefined |
undefined |
Object(对象) |
表示普通对象 |
用大括号包起来的键值对 |
{name:nihao} |
Null(空值) |
表示空对象 |
null |
null |
Array(数组) |
表示数组对象 |
用中括号包起来 |
[1,2,3] |
Regex(正则) |
表述正则对象 |
用反斜杠包起来 |
/^[+-]?/ |
数字类型(Number)
- 即我们数学中学习到的数字,可以是整数、小数、正数、负数、NaN(非数字)。
NaN
- NaN:not a number;意思是不是一个数,但是它属于数字类型。
- NaN和任何一个值都不相等,包括自己。
isNaN()
- 检测一个值是否为有效数字,如果不是有效数字返回true,如果是有效数字返回false。
- 再使用isNaN这个方法时,首先会检测检测值是否为数字,如果不是,它会进行隐式转换,用
Number()
这个方法将值先转为数字类型然后在进行检测。
Number()转化
- 将字符串转为数字,只要字符串中包含任意一个非有效数字字符结果都是
NAN
,空字符串会返回0
- 把引用数据类型转为数字,是先把他基于
toString()
方法转换为字符串
pareseInt()和parseFloat()
- parseInt()将其他数据转为数字整数
- parseFloat()将其他数据转为数字,取到小数点。
var a = '12px'
console.log(parseInt(a))
let ary = [13,14]
console.log(parseInt(ary))
复制代码
字符串类型(String)
- 通过单引号
''
、双引号""
或者反引号“包裹的数据都叫字符串,单引号和双引号本质上没有区别,推荐使用单引号。
- 一个字符串是由零到多个字符组成,每一个字符都有自己位置的索引,由一个length存储字符串的长度。
- 注意
- 无论是单引号还是双引号都必须是成对的使用
- 单引号/双引号都可以互相嵌套,但是不能嵌套自己,外双内单或者外单内双都可以。
- 必要时可以使用转义符
\
输出单引号或者双引号
字符串拼接
ES6新增的模板字符串
${}
中存放的是js表达式,可以是变量以及变量运算,三元运算符等等。
var x = 15
console.log(`${x}px`)
let b = 3
console.log(`${x*b}px`)
复制代码
利用+
拼接
+
号左右两边有一边出现字符串,结果就是字符串拼接
+
号左右两边有一个边出现对象(目的是把对象转为数字,进行数学运算)
- 系统首先会获取对象的
[Synbol.toPrimitive]
属性值
- 如果没有这个属性,其次获取他的
valueOf()
;原始值都是基本数据类型。
- 如果还没有原始值,最后就会把它转为字符串toString,最后就变成字符串拼接了。
let a = 46
console.log(a+'岁')
let ary = [12,13]
ary[Symbol.toPrimitive]
ary.valueOf()
let num = new Number(10)
console.log(num[Symbol.toPrimitive],num.valueOf)
console.log(num+10)
复制代码
+
号只出现一边,这样这一边即使是字符串/对象,也是数字运算
字符串的方法
获取字符串中的字符
let str = 'fhcsj'
console.log(str[2])
console.log(str[str.legnth-1])
console.log(str.charAt(2))
复制代码
把其他数据类型转化为字符串类型
- 利用
变量.toString()
方法
- 利用
String(变量)
- 注意:
- 数组转字符转,返回值是将数组中的每一项用逗号分隔
- 对于普通对象转为字符串,不论对象中包含的值是什么,最终的返回值都是
"[object Object]"
let num = 15,
ary = [11,13]
num.toString()
String(num)
ary.toString()
let obj = {}
obj.toString()
复制代码
charCodeAt()
substr(start,end)
slice(start,end)
- 返回新的字符串,截取从start索引到end,但是不包括end索引。
split(separator,howmany)
replace(regexp/substr,replacement)
- 用(replacement字符)替换 字符串中的(substr字符)或者替换一个与正则匹配的字符。
let str = 'fsfsdhfsdfs'
console.log(str.replace('fs','i'))
console.log(str.replace(/fs/),i)
console.log(str.replace(/fs/g),i)
复制代码
indexOf(searchValue,fromIndex)/lastIndexOf(searchValue,fromIndex)
indexOf()
- 返回规定检索的字符串值(searchValue,必写)的索引,fromIndex(规定从哪个索引值开始检索,可选)
- 如果在字符串中没有检索到规定的字符串值,则会返回-1。
lastIndexOf()
- 返回规定检索的字符串值从右往左第一次出现的索引,fromIndex规定从第几个字符开始(其中这个字符是从后面往前数的)。注意:它的0索引还是最左边的第一个字符。
- 如果字符串中检索不到规定的字符值则返回-1
let str = 'fsdhkhds'
console.log(str.indexOf('d'))
console.log(str.indexOf('d',3))
console.log(str.lastIndexOf('d'))
console.log(str.lastIndexOf('d',2))
复制代码
includes(searchValue,fromIndex)
- 判断字符串中是否包含规定的字符值(searchValue),从规定的索引开始(fromIndex),返回值为true或者false
let str = 'fdsds'
console.log(str.includes('a'))
console.log(str.includes('s'))
复制代码
布尔类型(Boolean)
- 表示肯定或者否定时,在计算机中对应的就是布尔类型,它有两个固定的值true或者false。
- 把其他数据类型转化为布尔类型的两种方式
- 注:只有0、NaN、空字符串、undefined变为布尔类型的值为false,其他的都是true。
未定义类型(undefined)
- 未定义类型是一种比较特殊的类型,只有一个值undefined。
- 什么情况出现未定义类型?
- 只声明变量没有赋值的情况下,变量的默认值为undefined,一般很少为某个变量赋值undefined。
Symbol(表示唯一值,属于基本数据类型)
let a = Symbol(0)
let b = Symbol(0)
console.log(a==b)
复制代码
对象数据类型
普通对象
数组对象
正则对象
日期对象
函数Function
常用的动词 |
含义 |
can |
判断是否可执行某个动作 |
has |
判断是否含义某个值 |
is |
判断是否为某个值 |
get |
获取某个值 |
set |
设置某个值 |
load |
加载某些数据 |
检测数据类型
typeof
- 语法
let age = 18;console.log(type age)
- 注意
- typeof能能检测基本数据类型。
typeof undefined
的返回值是undefined。
type null
的返回值是一个object。
JS算数运算符
- 数学运算符也叫运算符,主要包括假、减、乘、除、取余(求模)。
描述 |
符号 |
求和 |
+ |
求差 |
– |
求积 |
* |
求商 |
/ |
取余数(求模) |
% |
-
- 运算符比较特殊
- +运算符在数字型中是求和运算
- +运算符在字符串型中是拼接。
数据类型转换
隐式转换
- 某些运算符被执行时,系统内部自动将数据类型进行转换,这种类型称为隐式转换。
- 规则
- +号两边只要有一个是字符串类型,就会自动把另一个转为字符串。
- 除了+号以外的所有算术运算符都会把数据转成数值类型。
显式转换
- 编写程序时过度依靠系统内部的隐式转换是不严谨的,最好是通过显式转换比较好。
- Number(数据)
- 转成数字类型
- 如果字符串内容里有非数字,转换失败时结果为NaN(Not a Number)即不是一个数字。
- NaN也是number类型的数据,代表非数字
- Boolean(数据)
- 转成布尔类型
- 0、空字符串、NaN、undefined、null转成false,其他的都是true。
- 变量.toString()
ES6知识点
解构赋值
- ES6中的解构赋值,主要是针对对象和数组,左侧定义和右侧值类似的结构,这样声明几个变量,快速获取到每一部分的信息。
数组结构赋值
let arr = [1, 2, 3, 4]
let [x, y] = arr
console.log(x, y)
let[y,...x] = arr
let [a,...b] = arr
console.log(a, b)
let[, , , x, y] = arr
console.log(x, y)
let [, , , , b = 0] = arr
console.log(b)
复制代码
对象的解构赋值
let obj = {
name:'珠峰培训',
age:11,
teacher:'fc',
0:100
}
let {name,age} = obj
console.log(name, age)
let {name: x} = obj
let { x = 0 } = obj
console.log(x)
let {0} = obj
let {[0]} = obj
let{0: x} = obj
console.log(x)
let {hostname:domain, pathname:path} = location;
let ary = [100,'你好',{name: 'hello',score:[12, 13]}]
let [, y, {score:[, math]}]
console.log(y,math)
复制代码