学习每个软件的开始总需要了解他的历史与背景,个人觉得每个职业都需要了解自己职业的历史背景,可能对技术影响不大,但是是一个职业人的职业素养的体现,JavaScript的历史在了解后一方面觉得创始人的脑洞,但是也认为其中不乏神话创始人的意思,哈哈哈哈,但是确实厉害,在后续的发展与进步到现在已经变成了前端无可代替的技术与底层,还有关于机器语言,汇编语言,高级语言等一些计算机的以历史。在了解完了JS和计算机的背景与历史,我便开始了和其他程序一样的第一行代码“hello world!”,js的引入方式与css的方式很像有行内、script标签,外部js,还有es6中的导入
然后我就输入“console.log("hello world!")”。
我尝试在helloworld中多打了几个空格,发现输出的确实是多了几个空格,所以用js的引擎解析的代码与css的解析的引擎是不一样的
接下来就是学习到的基础知识点
基本数据类型
不可改变的原始值(栈数据) ,已经放进去的值不可改变,只会改编号为 null(硬盘原理) 原始值是把一个值放到另一个值里面,改了第一个值,第二个值不变
- Boolean 布尔值只有2个值 false与true
- String 字符
- Number 数字
- Null 空
- undefined 未定义
引用数据类型
引用值(堆数据)大致上放堆heap 里面,引用值是把第一个值放到第二个值里面,改第一个值,第二个值也改变。js 由值决定类型。原始值和引用值唯一的不同是赋值形式不同。
- 对象(函数,数组,正则,普通对象)
运算符
减乘除取模
这几个符号出来的结果一定是数字类型,由于JS是弱类型语言,所以包括浮点型和整型,存在隐式转换和强制转换,这几个符合能算的都会算,不能算就会变NaN,布尔值也会隐式转换,false是0,true是1。 隐式转换:实际上都是回去调用方法,底层代码调用的Number(),实际可以用+来进行测试
加号
任何类型与字符串相加,都会变成字符串拼接,结果一定是字符串类型
tips:由于JS是高级语言,存在高精度数(舍入误差)。所以在任何时候都要注意小数运算,有时候小数运算可能会出现高精度数。
++i 与 i++
++i 运算为新的值,储存也为新值
i++ 运算为旧值,储存为新值
比较运算符
比较运算符比较出来的结果一定是boolean值 大于,大于等于,小于等于,小于,==和=== (===为JS独有)
JavaScript属于弱类型,类型不同也是可以进行比较的,两个等号只比较值,不去比较数据类型
全等于就是会值和数据类型都得比较
逻辑运算符
|| 或 && 与 ! 非 短路运算(逻辑中断)
短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值;
位运算符
运算符之间存在优先级,
流程控制
流程控制就是来控制代码按照一定结构顺序来执行
一般分为3种:顺序结果,分支结果,循环结构 var a = 10; var b = 11; console.log(a,b) //此处就是一个标准的顺序结构,整篇代码是按照从上至下依次执行的
分支结果
在js种提供了2种方法:if语句、switch语句
// 条件成立执行代码,否则什么也不做
if (条件表达式) {
// 条件成立执行的代码语句
}
if else语句
// 条件成立 执行 if 里面代码,否则执行else 里面的代码
if (条件表达式) {
// [如果] 条件成立执行的代码
} else {
// [否则] 执行的代码
}
if else if 语句
// 适合于检查多重条件。
if (条件表达式1) {
语句1;
} else if (条件表达式2) {
语句2;
} else if (条件表达式3) {
语句3;
....
} else {
// 上述条件都不成立执行此处代码
}
三元表达式
表达式1 ? 表达式2 : 表达式3;
- 如果表达式1为 true ,则返回表达式2的值,如果表达式1为 false,则返回表达式3的值
- 简单理解: 就类似于 if else (双分支) 的简写
switch语句
switch( 表达式 ){
case value1:
// 表达式 等于 value1 时要执行的代码
break;
case value2:
// 表达式 等于 value2 时要执行的代码
break;
default:
// 表达式 不等于任何一个 value 时要执行的代码
}
循环
循环就是有条件的重复一件事
①循环条件:什么时候开始,什么时候结束
②循环操作:循环体,也就是循环的过程中做了什么
③自增量:我们需要用一个东西去控制循环的次数,不然就是死循环了。
for循环
for(初始化变量; 条件表达式; 操作表达式 ){
//循环体
}
-
执行过程:
- 初始化变量,初始化操作在整个 for 循环只会执行一次。
-
执行条件表达式,如果为true,则执行循环体语句,否则退出循环,循环结束。
- 执行操作表达式,此时第一轮结束。
- 第二轮开始,直接去执行条件表达式(不再初始化变量),如果为 true ,则去执行循环体语句,否则退出循环。
- 继续执行操作表达式,第二轮结束。
- 后续跟第二轮一致,直至条件表达式为假,结束整个 for 循环。
断点调试的流程: 1、浏览器中按 F12--> sources -->找到需要调试的文件-->在程序的某一行设置断点 2、Watch: 监视,通过watch可以监视变量的值的变化,非常的常用。 3、摁下F11,程序单步执行,让程序一行一行的执行,这个时候,观察watch中变量的值的变化。
双重for 在for循环中嵌套一个for循环,顺序是先执行第一层for,然后把第一层中嵌套的for语句执行完毕,在执行外层for循环语句
while语句
据说在算法中用处很多,在不确定值的时候
var i = 0;
while(i < 10){ //条件2
console.log("hello")
if(i == 5){
break;
}
i++; //条件3
}