JavaScript概述
JavaScript是一个解释型语言,一个脚本语言(具有侵入性,攻击性)一个弱语言(没有强制的类型)。
JavaScript由BOM(browser object model浏览器对象模型),DOM(docunment object modle文档类型),ECMAScript(基础语法)。ECMAScript主要版本有ES3(所有浏览器都支持), ES5(大部分浏览器支持) ,SE6(部分浏览器支持)。
JavaScript的相关书写
内嵌写法
<a href="javaScript:void">点击</a>
内联写法
<script></script>
外联写法
<script src="./index.js"></script>
JavaScript的变量
变量就是一个存储单位,他会根据你赋的值在内存中开启空间(根据赋值得到对应的类型)
变量声明
采用var关键词来进行声明 (var关键词声明的是伪全局变量)
var 变量名 = 变量值
变量命名的相关规范
不能是关键词和保留字
不能以数字开头
只能由数字,字母,下滑线,$构成
使用驼峰命名法 (首字母小写其他的首字母大写)
语义化命名 (见名知意)
JavaScript的数据类型 (根据赋值来决定类型)
基础值类型(存储在栈上)
1.数值类型(所有的数字都是数值类型)number
var number = 10
2.字符串类型 (使用单引号或双引号括起来的都是字符串类型)string
var str = 'hello world'
var str1 = "hello world"
3.布尔类型 (true 或者 false) boolean
var bool = true
4.null类型 (取值为null 空类型)
var obj = null
5.undefined类型 (未定义 他是null派生子类)
var un
引用数据类型 (存储在堆上)
object 、function 、date ....
javascript中的注释
//单行注释
/* */多行注释
类型转换
基础值类型转换引用数据类型 (装箱)
String
Number
Boolean
引用数据类型转为基础值类型 (拆箱)
toString 转为字符串
//obj对象转为字符串 对象中有东西 属性(方法)
1.console.log(typeof obj.toString());//转为字符串
console.log(typeof String(obj));//转为字符串
//obj对象转为对应的数值
console.log(typeof Number(obj));
//obj对象转为对应的布尔类型
console.log(typeof Boolean(obj));
console.log(Boolean(obj));
基础值类型之间的转换
转为字符串(String 及 toString方法)
数值转字符串
// 数值转换字符串
var number1 = 10
var str1 = String(number1)
console.log(typeof str1);
布尔类型转为字符串
//boolean类型转为字符串
var bool = true
var str2 = String(bool)
console.log(typeof str2);
null及undefined转为字符串
//null转为字符串
var nullObj = null
var str3 = String(nullObj)
console.log(typeof str3);
//undefined转为字符串
var un
var str4 = String(un)
console.log(typeof str4);
toString转换
//利用toString来转换
console.log(typeof number1.toString());
console.log(typeof bool.toString());
//null和undefined没有toString方法
转为数值类型 (Number 及 parseInt 和 parseFloat)
字符串转为数值 无法转换为NaN NaN是数值类型 Not a Number
任意类型转为数值的时候 无法进行转换就会出现NaN
boolean类型转为数值 true为1 false为0
null转为数值 值为0
undefined转为数值 值为NaN
parseInt 转整型 (切割前面的内容) parseFloat(保留小数) 转浮点型
转为boolean类型 (Boolean在条件表达式下自动转为布尔类型)
数值转为boolean类型 非0及NaN都是true
字符串转为boolean类型 非空字符就是true
null和undefined转为boolean类型 都是false
console.log(Boolean(null))
console.log(Boolean(undefined))
Number
NaN 无法被转换为数值的时候出现的
infinity 无穷大
+Infinity //无穷大
-Infinity //无穷小
运算符及其表达式
算术运算符
+ - * / % ++ --
+运算
如果有一个字符串类型的值 那么得到的就是字符串 字符串将会拼接
除此之外所有都是会转为对应的数值然后进行运算 默认的转换用到的是number方法
% 取余 取模
大数取小数 取余
小数取大数 为本身
NaN进行任何数值运算得到的数值都是NaN
++自增
var a = 1
a++ = a=a+1
console.log(a)//2
--自减
var b = 2
b-- b= b-1
console.log(b)//1
++ --前置和后置的区别
前置先执行 先++ --再执行其他的代码
后置后执行 先走了对应的其他代码以后再执行++ --操作
逻辑运算符
&& || !
&& 与
俩个都是true 则返回true(最后一个true) 有一个是false就返回false (第一个false)
|| 或
有个true直接取第一个true 如果都是false取最后一个false
! 非
取反操作 将对应的真的变假的 假的变真的 返回的结果是一个boolean类型
条件运算符
> < = >= <= == === != !==
返回的是一个boolean类型的值 (true或者false)
> < = >= <=
不同类型的比较
字符串和对应的数值比较 比较的过程会进行数值类型的转换
undefined会转换NaN
NaN 出现NaN结果就是false
== 判断俩个值是否相等 进行转换操作
字符串的数值和普通数值进行比较返回true
=== 恒等 全等俩个类型以及值完全相等
undefined==null为true undefined===null 为false
字符串和字符串相比较那么对应的比较的ascii码(先比首字母 大写字母比小写字母要小 排在前面
比后面的要小)
在对应的非数值的比较上会自动转为数进行比较
NaN==NaN为false 在正常比较中没有取反符号的情况下出现NaN就是false
恒等是基于==之上的 ==为false对应的恒等必定为false(==只比较值 ===要比类型)
赋值运算符
= += -= *= /= %=
var c =20
c+=10 //a=a+10 30
c*=10 //a=a*10 300
c/=10 //a=a/10 30
c-=10 //a=a-10 20
c%=2 //a=a%2 0
console.log(c); // 0
位移运算符
<< >>
位移运算是将对应的数值转为二进制进行移位运算
(将一个数值转为二进制使用除二取余法)