1、js执行-轮转时间片
2、浏览器组成=shell+内核部分
- 主流浏览器 内核
- IE trident
- Chrome webkit/blink
- firefox Gecko
- Opera presto
- Safari webkit
-
不同浏览器使用不同的javaScript引擎
chrome => v8
Firefox => OdinMonkey(奥丁猴)
safri => JSCore
IE浏览器=>Chakra(查克拉)
3、js引入方式
页面内嵌和外部引用,外部引用更符合目前web标准
4、变量
变量声明与赋值
var a = 111
命名规则
- 变量名必须以英文字母、_、$开头
- 变量名可以包括英文字母、_、$、数字
- 不可以用系统的关键字、保留字作为变量名
关键字与保留字
常见关键字
保留字
变量命名:
- 驼峰命名:第一个单词以小写字母开始;第二个单词的首字母大写或每一个单词的首字母都采用大写。
- 匈牙利命名:开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写
- 下划线命名:通过下画线连接多个单词。
5、数据类型
原始值
number类型表示数字类型,用于存储数字。数字可分为整型( int )和浮点型( float ),整型用于表示整数,浮点型用于表示小数;
string:string类型表示字符串类型,字符串是由Unicode字符集子集构成的序列,在JavaScript中用来表示文本的数据类型。
boolean:表示布尔值类型,布尔值表示真假值,只有两个可选值,即真值( true )和假值( false )。
object:表示对象类型,对象是各种值的集合。
undefined:表示未定义类型,如果var关键字声明一个变量,但并没有对其进行赋值,则无法判断变量的数据类型,此时变量数据类型是undefined
null:表示空类型,表示当前为空值
引用值
array object function ..date RegExp
6、类型转换
在JavaScript中改变数据类型的方式有显式类型转换和隐式类型转换两种方式。
显示类型转换是通过具体的方法,手动的进行转换的方式。Number()方法是把变量转成数字类型;String()方法是把变量转换成字符串类型;Boolean()方法是把变量转换成布尔值类型。
var foo = '1';
Number(foo); //1
typeof Number(foo); //number
隐式类型转换是通过运算的方式,自动的进行转换的方式。
类型比较:== 与 ===
其中==运算符左右变量进行比较时,值相同,类型可以不同;而===运算符左右变量进行比较时,值相同而且类型也要相同。
还有几个特殊的比较,undefined与null比较时会返回true;与NaN比较时,则会返回false。
注意,NaN与任何值比较都会返回false,包括它自身。这也属于JavaScript历史原因,当时的语法不够严谨,延续至今。JavaScript语言是一门极其灵活的语言,在很多地方不严谨,需要更多的实践与总结。
undefined == null; //true undefined === null; //false NaN == NaN; //false 2 == '2'; //true 2 === '2'; //false
7、算术运算符
javaScript 分为九种,赋值顺序自右向左,运算顺序,自左向右。
自增运算符( ++ )和自减运算符( -- )是对数值进行加1或减1的操作,会改变原始数值的大小。
var foo = 1;
var bar = 1;
foo++; //1
++bar; //2
8、赋值运算符
赋值运算符分为简单赋值运算符和复合赋值运算符两种。
简单赋值运算符将赋值运算符( = )右边表达式的值保存到左边的变量中。
复合赋值运算符结合了其他操作(如算术运算操作)和赋值操作。
9、比较运算符
比较运算符用于比较两个值,返回一个布尔值,表示是否满足比较条件。满足条件返回true,不满足条件返回false。
10、逻辑运算符
逻辑运算符一般用于执行布尔运算,通常和比较运算符一起用来表示复杂比较运算,逻辑运算涉及的变量通常不止一个,而且常用于if、while和for语句中。常见的逻辑运算符有&&(逻辑与)运算符、||(逻辑或)运算符和!(逻辑非)运算符三种。
&&表示逻辑与,若两边表达式的值都为true,则返回true;任意一个值为false,则返回false。
| | 表示逻辑或,只有表达式的值都为false,才返回false,否则返回true。
!表示逻辑非,若表达式的值为true,则返回false;若表达式的值为false,则返回true。
11、条件运算符
条件 ? 语句1 : 语句2;
其中,如果条件为true,则表达式的值使用“语句1”的值;如果条件为false,则表达式的值使用“语句2”的值,?:运算符需要有三个操作数,因此一般也称为三目运算。
1.if判断即if语句,是选择结构中运用最广泛的语句,一般可分为单向选择、双向选择和多项选择三种形式。
if( 逻辑条件 ){ 语句1; } 语句2;if( 逻辑条件 ){ 语句1; } else{ 语句2; }if( 逻辑条件 1){ 语句1; } else if(逻辑条件2){ 语句2; } else{语句3; }
2. switch判断即switch语句,也是选择结构中很常用的语句,用于将一个表达式同多个值进行比较,并根据比较结果选择执行语句。
switch(表达式 ){case 取值1: 语句1; break; case 取值2: 语句2; break;default: 语句3; }
3.while循环即while语句,是循环结构中常见的语句,也是比较简单的循环语句。
while( 逻辑条件 ){ 语句1; } 语句2;
4.for循环即for语句,也是循环结构中常见的语句,同时也是使用最为广泛的循环语句。
for(初始值;逻辑条件;循环后操作 ){ 语句1; } 语句2;
5.break语句用于跳出整体循环,停止后续循环操作。
for( var i=0; i<5; i++ ){if(i==3){break; //跳出整个循环}console.log( i );} // 首先定义了一个for循环,并且根据条件会执行5次循环体,但是当i自增到3时,会触发循环体中if语句的执行,即触发break语句,break在循环中表示跳出整个循环,后续的代码及后续的循环都会立即停止,因此,只会触发输出0、1、2三个结果。
6.continue语句与break语句类似,但continue语句只跳出本次循环,不影响后续循环。
for( var i=0; i<5; i++ ){if(i==2){continue; //跳出当前循环}console.log( i );} // 首先定义一个for循环,然后根据条件会执行5次循环体,但是当i自增到2时,会触发循环体中if语句的执行,即触发continue语句,continue在循环中表示跳出当前循环,后续的代码不会执行,但是后续的循环还会继续,因此,会触发输出0、1、3、4四个结果,而2并没有触发。