认识js:
JavaScript(简称js):直译脚本语言,是一种弱类型的解释性语言,它依赖于宿主环境,一般为浏览器
浏览器内嵌了JS解释器(解读JS代码,翻译为机器可以看懂的语言)注:弱类型:声明变量时不需要规定类型
js组成部分:
es语法标准 ECMAScript
dom文档对象类型 Document Object Model
bom浏览器对象模型 Brower Object Model
变量与数据类型
调试错误:console.log() 日志,打印变量/对象:在需要查看变量具体是什么的时候,将其打印出来看它的结果
一般不用alert()去进行调试,它会阻塞后面代码的执行
<script> console.log() </script>
变量的命名规范
-
不能是中文
-
不能使用数字开头
-
不能使用关键字、保留字(未来可能会成为有特殊作用的关键词)作为名字
声明变量的关键字: let/const
-
秉持见名知意的原则,由字母、数字、_、$进行自由组合
-
采用驼峰命名法(例如:oDiv)
变量声明
-
let
<script> let x = 100 let y = 200 // x=100 不要漏写let /*声明变量只需要声明一次,不需要重复声明 使用变量就是使用变量里存储的值 */ x = 300 //修改值,可反复修改,但是为覆盖式 </script>
-
const
<script> const x = 100 x = 200 // 错误,不能修改 /* const和let差不多一样,区别在于: const在声明时必须赋值,并且后期不可以通过 = 修改值,是恒定不变的常量 const声明的常量的命名一般是 */ x = 300 //修改值,可反复修改,但是为覆盖式 </script>
数据类型(主要为8种)
-
number 数字
<script> let num1=1.0 console.log(typeof num1); /* JS不区分整数和小数 NaN 表示坏掉的数字,坏值 */ console.log(100 === 100) // 是true/否false console.log(NaN === NaN) // false,原因是坏值也有很多种 /* 运算符:判断是否完全相等 === 全等于,判断左右两边的值是否完全相等,相等则会返回结果true,不相等就返回结果false */ </script>
-
string 字符串
<script> let str1 = '编程有点难' let str2 = "编程有点难" let str3 = `编程有点难` /字符串的三种书写方式 let str1 = "小明说:'今天有雨'. " /* '、"或者`会自动找到距离最近的另一半进行配对,因此可以不同书写方式混合使用 */ let str4 = '我学习了' let num1 = 1 let str5 = '门编程语言' console.log(str4 + num1 + str5) /* 运算符为 + +号左右两边都为数字类型,会进行加法运算 +号左右两边任意一边为字符串,则会进行拼接,拼接后形成1个新的字符串 */ /* 字符串的拼接: let people = "小红"//引号包裹的文字都会变成普通的文字,失去附加的功能意义 console.log('小明给了'+ people + '一个大鼻窦')//不推荐 console.log(`小明给了${people}一个大鼻窦`) //推荐的拼接字符串的方式 */ </script>
字符串的长度:字符串内字符的总数量(在编程中的长度指的是数量)
<script> let str = "斗罗大陆" //长度为4 console.log( str.length ); //length: 获取字符串的长度 </script>
-
boolean 布尔信
<script> let bool1 = true let bool2 = false /* 布尔类型:true真(是), false假(否) 应用场景:用来做判断条件 */ </script>
-
undefined 未定义
<script> let y; //定义变量但不赋值,js会为其添加默认值undefined console.log(y); //在页面控制台中会显示undefined </script>
-
null 类型:空,什么都没有,无
-
object 类型
对象类型,有很多种:数组、普通对象、DOM节点、函数、内置对象...
数组:(批量存储数据)
-
有序存储多条任意类型的数据,每条数据使用,隔开
<script> let arr = [10, "下班",true, 666n] //定义数组变量 console.log(arr); console.log(arr[0]); //取值的写法:arr[下标] console.log(arr[1]); console.log(arr[2]); console.log(arr[3]); //下标(序号):从0开始 console.log(arr[7]) //获取不存在的下标成员值是undefined arr[1] = "加班" //通过 = 来修改值,(修改就是赋予其一个新值) arr[6] = "不想加班" /* 往数组内指定位置增加成员(值),不推荐跨空位添加成员,会导致出现很多空位empty 通过下标位置新增成员一般时间以在尾部追加成员 */ console.log(arr.length) //数组长度(数组的总成员数) </script>
那么数组里面可以放数组吗?
当然可以,内部嵌套数组的数组叫多维数组
<script> let arr = [10, ["下班",true], 666n] console.log(arr[1][0])// 取数组内嵌套数组的值 </script>
普通对象:
{}包裹,已键值对的格式来存储多条任意类型的数据(无序),键值对由键名和属性名组成,属性名命名尽量见名知意
<script> let obj = {name:"小华",sex:"男",age:"16"} </script>
-
-
symbol 符号
用来生成1个独一无二的值,避免重名的冲突(避免对象中属性重名的冲突)
<script> let x1 = Symbol() //创建1个独一无二的值 let x2 = Symbol() console.log(x1 == x2) let s1 = Symbol("1") // 打标记,"1"仅仅是给开发者肉眼区分的功能,开发时使用较少 let s2 = Symbol("2") </script>
-
bigInt 大常数
<script> let num = 100n console.log(num); /* BigInt 类型开发时使用很少,用于超大范围的数字的整型运算,避免丢失精度(number数字9007199257610991就是一个超大范围的数字) 只能用于整数,不能用于小数,如果运算产生了小数,显示结果会将小数全部去掉 作用:表示超大整数,或者高精度时间戳 */ //100n - 100 错误,不能和数字(number类型)进行运算,只能与同类型数据进行运算 </script>
提示:
typeof 检测数据的类型(是一种比较粗糙的工具,仅供参考)
<script> let num1=1.0 console.log(typeof 1-"shuzi");//非法运算得到坏值,NaN console.log(typeof NaN);//打印出来会显示number </script>
vscode 快捷键
缩进 tab
反缩进 shift + tab
自动换行 alt + z
向下复制一行 alt +shift + 下方向键
向上复制一行 alt +shift + 上方向键
换行 alt+上下方向键
注释 ctrl + /