DAY1
一、JavaScript发展史
1、javascript是1995年网景公司雇佣布兰登开发的全新语言
2、javascript最初是为了实现浏览器客户端交互
3、ECMAScript与javascript关系:前者是后者的规格,后者是前者的一种实现。在日常场合,这两个词是可以互换的。
二、书写方式
-
行内式
-
+ a 标签 `<a href="javascript:alert(123);"></a>` + 非 a 标签 `<div οnclick="alert(123);"></div>`
-
-
内嵌式 可以写在页面的任意一个位置 但是建议书写在
body
结尾
<script src="./test.js">
// 在这儿写的任何代码都不会起作用
/*多行注释*/
</script>
外链式 引入了外部文件的 script 标签里面不能再写 js 代码 写了也没用
<script src="index.js"></script>
三、输出语句
- alert() 提示内容
- console.log() 向文档中输出内容
- document.write() 向控制台打印输出日志信息
- prompt()
- confirm() 确认内容
四、变量
存储数据的容器
声明变量使用 var
关键字
- 变量的命名规则
- 不能使用关键字或保留字
- 不能使用中文
- 由 $ 数字 字母 _ 组成
- 不能以数字开头
- 不能超过 255 个字符
- 严格区分大小写
- 变量的命名规范
- 语义化
- 尽量使用驼峰命名法
声明多个变量的时候 用 ,
隔开
五、数据类型
-
基本(简单)数据类型
-
数值型 number
- NaN Not a Number 不是一个数字
-
字符型 string
-
布尔型 boolean(true&false)
-
空型 null
+ 表示拿到的数据为空,就是没有的意思
+ 清除变量的值
+ 起一个占位的作用
+ 注意点:
1、null的typeof的返回值不是null,是object
2、尽量不要去使用name,因为它也是关键字,变量命名的时候top表示的是window,不能使用
+ null型小故事:
语言设计者最初设计语言的时候,因为其他语言里面数据类型也有空型,js在被设计的时候其实也借鉴了
很多其他语言的语法和思想,例如,java、c等等。把空型直接归纳在了基本数据类型里面,结果最后发现
null返回的结果是object,所以为了区分又在空型上衍生出了一个新的基本数据类型undefined
-
未定义型 undefined
+ 一个变量声明了但是未赋值,返回的是undefined
+ undefined主要是为了和null做区分
+ 注意点:
1、一个未被声明的变量,提示信息也是未定义(报错信息)
2、如果前面的代码报错,后面的代码就不再执行了(阻塞)
-
-
引用(复杂)数据类型
六、转换数据类型
-
转换为数值型
-
Number(变量) 把要解析的数据当成一个整体
-
parseInt(变量)
从第一位开始检查,是数字就转换,直到一个不是数字的类容
开头就不是数字,直接返回NaN
从左到右识别 不认识小数点
-
parseFloat(变量)
从第一位开始检查,是数字就转换,直到一个不是数字的类容
开头就不是数字,那么直接返回NaN
从左到右识别 认识并且只认识一个小数点
-
除了 + 以外的其他运算符号
-
-
转换为字符型
- String(变量) 所有数据类型都可以
- 变量.toString() 有一些数据不能通过toString()方法,比如undefined和null
-
+
只要两侧有一个是字符串 就是拼接的作用
-
转换为布尔型
- Boolean(变量)
只有 5 个数据转换出来为false
0
''
NaN
null
undefined
Number()把其他类型转成数值类型
+ 注意点:
1、把布尔类型的true转成数值类型结果是1
2、把布尔类型的false转成数值类型结果是0
3、把空型转成数值类型结果是0
4、把未定义类型转成数值类型结果是NaN
5、把字符串不是纯数字的转成数值类型结果是NaN
String()把其他类型转成字符串类型
+ 后面要学习前后端交换,数据交换,在实际开发中这种应用场景非常多
+ 前后端数据交换要求(规定)的数据格式就是字符串类型,其他类型不识别
Boolean()把其他类型转成布尔类型
+ 注意点:
1、把数字1或者大于1还有小于1的数值类型转成布尔结果是true
2、把Infinity(正无穷大)或者-Infinity转成布尔类型结果是true
3、把数字0转成布尔类型结果是false
4、把NaN转成布尔类型结果是false
5、把字符串的0转成布尔类型结果是true
6、把空字符串(没有空格)转成布尔类型结果是false
7、把空型转成布尔类型结果是false
8、把未定义类型转成布尔类型结果是false
- Boolean(变量)
七、检测数据类型
-
typeof 只能准确检测基本数据类型
<script type="text/javascript"> var a; alert(typeof a); // undefined a = 998; alert(typeof a); // number a = "用心学习"; alert(typeof a); // string a = true; alert(typeof a); // boolean </script>
-
isNaN 判断一个字符是否为非数字 如果是数字返回false,如果非数字返回true
八、操作符
-
运算操作符
+ - * / % ++ --
<script> alert(1234 / 1000 * 1000); // 1234 var s = "12"; s -= 10; alert(s); // 2 var s = "aa"; s -= 10; alert(s); // NaN Not a Number 不是一个数字 var s = "12"; s += 10; alert(s); // 1210 </script>
-
比较操作符
> < >= <= ==(只判断值是否相等) ===(不仅判断值也会判断数据类型) !=(只判断两边的值是否相等) !==(不仅判断值也判断数据类型是否相等)
-
赋值操作符
= += -= *= /= %=
num *= 3 // num = num * 3
-
逻辑操作符
&&与、并且 ||或者 !非
九、隐式数据类型转换:
1.字符串加数字,数字就会转成字符串。
2.数字减字符串,字符串转成数字。如果字符串不是纯数字就会转成NaN。
字符串减数字也一样。两个字符串相减也先转成数字。
3.乘,除,大于,小于跟减的转换也是一样。
隐式数据类型转换:
1.undefined等于null
2.字符串和数字比较时,字符串转数字
3.数字为布尔比较时,布尔转数字
4.字符串和布尔比较时,两者转数字
关于几个等号问题(重点):
+ = 一个等号表示赋值
+ == 两个等号表示比较,会进行隐式数据类型转换
+ === 全等于,也是比较,只有满足两个条件的时候才会为真
条件:
1、当值相等时
2、当数据类型相等时