学习JavaScript必须要了解的基本概念

javascript es5

1.js介绍,入门,引入,变量值类型
主流浏览器 内核

IE ======== trident 吹灯特
chrome 库肉木 ======== webkit/blink 万博K特/波林可
firefox 发夫克斯 ======== Gecko 干口
opera O普 ======== presto 不软四套
safari 死夫瑞 ======== Webkit 万博K特
主流浏览器必须市场占有率大于3%,有独立研发的内核
引入js文件方式

1,<script type="text/javascript"></script>
2,<script type="text"/javascript "src=jswj.js"></script>
一个文件引入两种的话 外部的好使
结构 结构 样式 相分离

htmt js css
变量声明

var a; 向系统要一个房间这个房间叫 a变量赋值
a = 100; 把100的数值放到a里
var a = 100; 可以这样写
开发标准变量声明方法 单一wo模式

var a = 10,
b = 20,
c = 30,
d = 40,
e = 50;
document.write(a);
命名规则
1,必须以英文字母,下划线,$开头。
2,变量名也可以包括英文字母,下划线,$,数字。
3,不可以用系统关键字,保留字作为变量名称。
JavaScript 保留关键字
Javascript 的保留关键字不可以用作变量、标签或者函数名。有些保留关键字是作为 Javascript 以后扩展使用。(如下表)
abstract arguments boolean break byte
case catch char class* const
continue debugger default delete do
double else enum eval export
extends* false final finally float
for function goto if implements
import* in instanceof int interface
let long native new null
package private protected public return
short static super* switch synchronized
this throw throws transient true
try typeof var void volatile
while with yield

标记的关键字是 ECMAScript5 中新添加的。
JavaScript 对象、属性和方法
应该避免使用 JavaScript 内置的对象、属性和方法的名称作为 Javascript 的变量或函数名:
Array Date eval function hasOwnProperty
Infinity isFinite isNaN isPrototypeOf length
Math NaN name Number Object
prototype String toString undefined valueOf
基本语法,数据类型
5种原始值 stsck(站内存)

 Number          String         Boolean        undefined              null
 数字类型         字符串         false:错 0     表示还没复值      表示空的(占位)
 NaN------非数Infinity---正无穷           true:对 1  
 n种引用值  heap(堆内存)
 Arrsy Object function ...... date RegExt

数组类型 对象类型 函数(方法)类型 省略 未知 正则表达式

 var arr = [1];
 var arr1 = arr;
 arr.pash(2);      ------------ 增加一个数进去,
 document.write(arr1); ----打印出来1,2。因为数组类型不同,原始值不变 引用值1.2。

站内存之间的互相赋值(var a = 100;var b = a;)是互相拷贝的
堆内存是 在站内存里放着堆内存的间号两人同时指向同一个房间
js运算符
js计算顺序自左向右,先乘除后加减,特殊优先级特殊处理,赋值顺序自右向左。
+号 两个作用:数学运算,字符串连接
任何数据类型加上字符串都等于字符串
分别有:“-减号”,“*乘号”,“/除号”,“%余数(余几)”,“=等于号”,"()"。
优先级:“=”最弱,“()”优先级较高

“a++”    a加一值再赋给自身
“a--”        a减一值再赋给自身

另一种表现形式:”--a“++a”先减减

“a+=10;”        相当于a = a + 10:加10赋给自身
分别有:“-=”,“*=”,“/=”
“%=”取余数赋给自身

2.比较运算符,逻辑运算符,条件语句,循环
比较运算符
字母于字母比较用 asc码
asc码有128个,七位2进制数组成

<小于,>大于,==等不等于,=用于赋值,<=小于等于,>=大于等于,!=是否不等于
逻辑运算符&& || !

undefined,null,NaN,""空串,0,false这些转换为布尔值的结果是false
var a = 1 - 1 && 1 + 1; 直接返回0
先看第一个表达式转换成布尔值的结果,如果为真,那么它会看第二个表达式转换成布尔值的结果,
都为真返回最后一个数,碰到假直接返回,一直都在找那个假
常用于短路语句

var a = 1 - 1 || 1 + 1; 返回2
||和&&相反先看第一个表达式转换成布尔值的结果,如果为假,那么它会看第二个表达式转换成布尔值的结果,
都为假返回最后一个数,碰到真直接返回,一直都在找那个真
常用于解决IE兼容性问题
var a = !123; 非123就是转换成布尔值再取反再赋给自己
条件语句 if for while

if(1 > 0){
执行语句
}
当条件成立执行语句
怎么看条件成不成立?
看1大于二转换成布尔值是 faise,还是true
是teue就执行语句
还可以:if(1 > 0 && 8 > 9){} 1大于0吗并且8大于9吗
else if{}满足了第一个条件他就不会执行第二个条件(条件于条件之间要有互斥性)
for循环

  (1)           (2)     (3)

for(var i = 0;i < 10; i++){
document.write('a');
}
先执行一遍(1)
再判断(2) 执行语句
执行(3)
再判断(2) 执行语句
执行(3)
再判断(2) 执行语句
执行(3)
直到条件成立结束循环
for循环内部原理:

1.var i = 0;
2.if(i < 10){
document.write('a')
}
3.i++; --->这时候i已经是1了
4.if(i < 10){
document.write('a')
}
5.i++; --->这时候i已经是2了
直到条件成立结束循环

while循环和for循环底层原理是一样的是for的简化版

var i = 0;
while(i < 10){
document.write('i');
i++;
}

我来吐槽

*

*