关于Script标签
Script标签通过src引入资源,引入资源的Script标签内容不会再被识别。
使用文件引入的好处是浏览器会下载他,其他页面也想使用的时候会直接从缓存中获取,可以节省流量,加快速度。
Q:使用script标签引入的和使用import引入的有什么区别?分别如何使用?
关于注释
多行注释在编辑器里一般是ctrl+shift+/,在代码里是
/* 123
123
*/
注意无法内联嵌套!
关于use strict
用处是修改JS老版本开发者犯下的一些错误。
上面那段话非常笼统,具体是哪些错误我也不太清楚,所以后面再看。
刚看了一下代码仓库,很多引入的node_module里面的内容的第一行都会有use strict,难怪平常开发中看到很少,原来早在模块中都引用了
关于变量和常量
const定义的一般为常量,不会再做修改。
Q:有性能上的提升吗?为什么不能全部用let?
关于数据类型
JS是动态类型语言,允许一个变量在不同类型的变量中反复变更。
所以推荐使用TypeScript,可读性增加不少啊。
Number类型
常规的数字以及NaN,Infinity。可以进行加减乘除等操作不会报错。
但是Number无法表示2的53次方量级的数据,所以最近新添加了一个类型叫做
BigInt
大于2^53 - 1的数据只能使用BIgInt来存储。
表示任意长度的整数,将n置于数字末尾来创造BigInt
并且现在BigInt存在兼容性问题,IE好像没有支持。好像也用不上
String类型
js的String类型可以使用单引号、双引号、反引号进行包裹。双引号和单引号几乎没有差别
反引号有功能扩展的作用,可以插入模板字符串 例如
let weather = "晴"
let str = `今天天气真不错啊,是一个${weather}天`
consolg.log(str) // 今天天气真不错啊,是一个晴天
Boolean类型
true和false而已啦
Null和Undefined
Null和undefined不属于上述任何一种数据类型。
null只代表空。undefined代表未定义,例如声明一个变量,但是不给他赋值,此时他的值就是undefined。
Object和Symbol类型
上述其他的类型(包括Symbol)都叫做原始类型。原始类型现在统计的有5个了,他们的值只包含一个初始内容。
Object用来存储数据集合以及更复杂的实体。
symbol用于创建对象的唯一标识符。用的也很少
注意typeof null 是Object。
关于一些直接的交互
let result = prompt(title,[default])
出现一个类似于alert的弹窗,但是有一个可以交互的输入框,用户的输入会赋值给result
方括号代表是可选项,不是必填项。
let ok = confirm("are you ok?")
根据选择的是否来返回数据,true or false。
关于类型转化
部分方法会直接进行值得类型转化,例如运算符或者alert。
如果把一些奇怪的东西转成数字会有些奇怪的现象。
| value | turn into |
|---|---|
| undefined | NaN |
| null | 0 |
| true 或者false | 1 and 0 |
| 字符串 | 若是数字就是数字,不是就NaN |
boolean类型的转化
直观上是空的值:0、空字符串、null、undefined、NaN 会变成false
其他都是true
那么问题来了,“0” 他是true ," "也是true
关于运算符
求幂 **
a**b 的意思是 a的b次方
加号链接字符串
加号可以拼接字符串,同时如果前一个是字符串,他会视后面的也是字符串。
alert(2 + 2 + '1') //输出的是41
alert(2 + '1' + 2) // 输出212
单独一个+ 相当于数字转义符
我擦还能这样
前置自增和后置自增
前置 -> 返回的值是加完后的数据;后置 -> 返回的是原数据