1. JS的HelloWorld
JS代码需要写到script标签中:
控制浏览器弹出一个警告框:
alert();
让计算机向页面中输出一个内容:
document.write();可向body中输出一个内容;
向控制台输出一个内容:
console.log(); (开发人员查看)
2. JS编写的位置
1. 可编写到标签的onclick属性中:
点击按钮时,js代码才会执行;
<button οnclick=”alert(‘你好‘);“>点我一下</button>
2. 可编写到超链接的href属性中:
点击超链接时,js代码才会执行;
<a href=”javascript:alert(‘让你点你就点‘);”>你也点我一下</a>
<a href=”javascript:;”>你也点我一下</a>
虽可写在标签属性中,但属于结构与行为耦合,不方便维护,不推荐使用。
3. 可写在script标签中;
4. 可写在外部js文件中,通过script标签引入:
<script type=’text/javascript” src=”js/script.js”></script>;
可在不同页面中同时引用,也可利用浏览器的缓存机制,推荐使用;
script标签一旦引入外部文件,不可再编写代码,写了浏览器也会忽略;
可以新建一个script标签。
3. 基本语法
JS注释:
多行注释:/* */
单行注释://
1. JS中严格区分大小写;
2. JS中每条语句以 ; 结尾;
若不写 ; ,浏览器会自动添加,但会消耗一些系统资源;并且可能加错分号,所以开发中必须写分号。
3. JS中会忽略多个空格和换行,可利用空格和换行对代码格式化;
4. 字面量和变量
字面量:
都是一些不可改变的值;
比如:1 2 3 4 5
字面量可直接使用,但一般不会直接使用字面量;
变量:
可以保存字面量,变量的值可任意改变;
变量更方便使用,开发中都通过变量去保存一个字面量,很少直接使用字面量;
可通过变量对字面量进行描述。
声明变量:
JS中使用var关键字声明一个变量:
var a;
a = 123;
a = 456;
声明和赋值同时进行:
var a = 123;
5. 标识符
标识符:
在JS中所有的可由我们自主命名的都可称为标识符。
例如:变量名、函数名、属性名
命名标识符的规则:
1. 标志符中可含有字母、数字、_、$;
2. 标识符不能以数字开头;标识符不能是ES
3. 标识符不能是ES中的关键字或保留字;
4. 标识符一般都采用驼峰命名法:
5. 首字母小写,没单词开头字母大写,其余字母小写:HelloWorld
JS底层保存标识符时实际采用Unicode编码,所以理论上讲,所有utf-8中的字符都可以作为标识符。但千万不要用。
6. 字符串
数据类型指的就是字面量的类型:
JS中一共有六种数据类型:
String 字符串
Number 数值
Boolean 布尔值
Null 空值
Undefined 未定义
Object 对象
其中,String Number Boolean Null Undefined属于基本数据类型,Object属于引用数据类型。
String字符串:
JS中字符串需引号引起来;
使用双引号和单引号都可,但不要混用;
引号不能嵌套,双引号里不能双引号,单引号里不能用单引号,双引号里可用单引号;
可使用 \ 进行转义特殊符号:
\n 换行 \t制表符 \\ 表示\
Number数值:
JS中所有数值都是Number类型;
包括整数和浮点数。
可以使用typeof来检查一个变量的类型:
typeof 变量
检查字符串,控制台返回string。
JS中可表示的数字的最大(小)值:
Number.MAX_VALUE
(Number.MIN_VALUE最小正值)
若超过最大值,则用Infinity表示正无穷、-Infinity表示负无穷;
Infinity表示字面量。
NaN表示一个特殊的Number数字,表示不是Not A Number。
Number的计算:
JS中整数运算基本可保证精确;
JS中进行浮点数计算,可能得到不精确的结果;
千万不要使用JS进行对精确度要求比较高的运算。
Boolean布尔值:
布尔值只有两个,主要用来逻辑判断:
true:表示真
false:表示假
Null空值:
Null只有一个,就是null;
专门用来表示一个为空的对象;
使用typeof检查时,返回object。
Undefined未定义:
值只有一个,就是undefined;
当声明一个变量,但不给变量赋值时,它的值就是undefined;
使用typeof检查时,返回undefined。
7. 强制类型转换
类型转换主要指,将其它数据类型转换为Sting、Number、Boolean。
String:
1. 调用被转换数据类型的toString()方法;
调用xxx的yyy方法,就是调用xxx.yyy();
var b = a.toString();
该方法不会影响到原变量,它会将转换的结果返回;
注意:null和undefined没有toString()方法,若调用,会报错。
2. 调用String()函数,并将被转换数据的参数返回给函数:
a = String(a);
Null、Boolean、Null、Undefined都可以。
Number:
1. 使用Number()函数:
a = Number(a);
字符串转数值:纯数字字符串,直接转换为数字;字符串含有非数字,输出NaN;
布尔转数值:true 1 false 0
Null转数值:0
Undefined转数值:NaN
2. 专门用于字符串:
parseInt()函数:可将字符串中有效的整数内容取出,转换为Number;
parseFloat()函数:可将字符串中有效的小数内容取出,转换为Number;
如果对非String使用,会先将其转换为String,然后再操作。
Boolean:
使用Boolean()函数:
数字转布尔:除0或NaN,其余都为true;
字符串转布尔:除空串,其余都为true;
null false;
undefined false;
对象也会转换为true。
隐式类型转换:
取两次非。
8. 其它进制的数字
16进制以0x开头;
8进制以0开头;
2进制以0b开头(不是所有浏览器都支持)。
像“070“有些浏览器会当作8进制,有些10进制,可使用下式解决:
a = parseInt(a, 10);
- 运算符
运算符也叫操作符,可对一个或多个值进行运算,并获取运算结果;
比如:typeof为运算符,可获得一个值的类型,将该值的类型以字符串的形式返回。
算数运算符:
对非Number值运算,会先将值转换为Number,再进行运算;
任何值与NaN作运算,得到的值都为NaN;
若对两字符串进行加法运算,会进行拼串操作,并将结果返回(String);
可使用 + 拼串换行;
任何值和字符串作加法运算,都会转换为字符串,并作拼串操作:
可利用此特点,将任一数据类型转换为String,这是隐式的类型转换,由浏览器自动完成,实际上进行String()操作。
(“c = “ + c)
任何值作 - * / 运算时,都会自动转换为Number;
利用上特点进行隐式的类型转换:
值-0 *1 /1转换为Number,原理同Number()。
一元运算符:
只需要一个操作数;
+ 正号 不会对数字产生任何影响
- 负号 可对数字进行负号取反
对非Number值,先转换为Number再运算;
可对其他数据类型使用 + ,将其转换为number,原理同Number()。
自增++:
使变量在自身的基础上增加1;
自增后,原变量的值会立即自增1;
后++ a++; 值为自增前的值
前++ ++a; 值为自增后的值
都会使原变量立即自增1
自减--:
使变量在自身的基础上减少1。
逻辑运算符:
! 非
对非布尔值进行非运算,会先将该值转换为布尔值,然后再去取反;
可对任意数据取两次反,将其转换为布尔值。
&& 与
JS中的与为短路的与,第一个为false,不会再看第二个。
对非布尔值进行与运算,会先将该值转换为布尔值,然后再运算,并返回原值;
若两个都为true,返回后面的值;
若两个有false,则返回靠前的false。
|| 或
JS中的与为短路的或,第一个为true,不会再看第二个。
对非布尔值进行或运算,会先将该值转换为布尔值,然后再运算,并返回原值;
第一个为true,返回第一个值;
若第一个为false,返回第二个值。
赋值运算符:
= 右侧的值赋值给左侧。
+=
-=
*=
/=
%=
关系运算符:
比较两个值之间的大小,成立返回true,否则false。
< <= > >=
对非数值比较:
先转换为数值,再比较
“Hello”转换为NaN;
任何和NaN比较都是false;
如果符号两侧都是字符串,不会转换为值比较,会直接比较字符的Unicode编码:
比较时,一位一位比较;
如果两位一样,比较下一位;
比较中文时,没有意义;
如果比较两个字符串型的数字,可能会得到不可预期的结果,所以比较字符串型的数字时,一定要转型。
使用Unicode编码:
JS中:\u + 四位编码
网页中:&# + 编码,编码需要为十进制
相等运算符:
属于关系运算符,比较两值是否相等,相等返回true,否则返回false。
==
两个值不同类型是,会自动转换为相同类型,进行比较。
undefined衍生自null,所以这两个值作相等判断,返回true;
NaN不和任何值相等,包括他本身,可通过isNaN()函数判断是否为NaN;
!=
两个值不同类型是,会自动转换为相同类型,进行比较。
===
全等:和相等类似,但不会自动类型转换;
类型不同,直接false。
!==
不全等:和不等类似,但不会自动类型转换;
类型不同,直接true。
条件运算符(三元运算符):
条件表达式 ? 语句1 : 语句2
true执行语句1并返回结果;false执行语句2并返回结果。
如果结果为非布尔值,会先转换为布尔值,再返回。
,运算符:
使用,分割多个语句,一般在声明多个变量时使用。
运算符优先级:
优先级不清楚,可使用 () 来改变优先级