js是一种解释性弱类型面向对象的脚本语言。可以在一切的编译器中进行编译!
解释性:代码不用进行语法检查,直接进行运,直到错误就停止执行。
弱类型:所获取的数据类型由数据本身决定。
面向对象:生活中的一切都可当作对象。
js脚本语言的使用方法:直接在html文档中使用(最好最后面使用)、使用外部引入的方式使用(在开发中经常使用)
输出方式:在控制台日志中输出(console。log())、在html文档中输出(document.write())、在浏览器窗口中输出(alert())
变量与常量:
变量(var):创建后,它的值是可以改变的。
变量命名所需注意:
1.不能数字开头。
2.尽量使用驼峰命名法,要见名知其意。
常量(const):创建后,它的不能被改变。
数据类型:原始数据类型和引用数据类型。
原始数据类型:string、number、boolean、undefined和null。
string(字符串):取值无数个。需要加上""或''。
number(数字):取值无数个。直接写数字不需要加任何东西。
boolean(布尔):取值由两个true和false。
undefined(未被定义):取值为undefined(垃圾)。
null(空):一般用于释放内存。但是麻烦。取值为l。
引用数据类型:11个。
运算符:算术运算符、关系运算符、逻辑运算符、自增自减运算符、位运算符和赋值运算符。
算术运算符:+、-、、/ 和%(取余)
特点: 1.带有隐式转换:会把运算符两边的数据转换成数字再进行运算。
2.%经常用于判断数字的奇偶性;取出数字当中的一个数。
3.+运算符,如果碰上一个字符串,左右两边都会悄悄的转为字符串,+运算进行拼接操作。
关系运算符:>,<,>=,<=,==,!=,===,!==。
特点:1.带有隐式转换:会把运算符两边的数据转换成数字再进行比较。
2.比较的结果是布尔值。
3.如果运算符两边的数据都是字符串,两边则进行按位PK每个字符的ASCII码:(数字0-9<大写A-Z<小写a-z<汉字)
逻辑运算符:&&、||、!
&& 与:当条件都满足时,才为true,否则为false;
|| 或:至少满足其中一个条件时,就可以为true,全部都不满足时为false。
! 非:颠倒布尔值。
赋值运算符(把=号右边的值给左边):=,+=,-=,=,/=,%=。
特殊:+=实际上是进行了两项操作。
自增自减运算符;++ --.
特殊:运用它是它的步长只能是一。
前++与后++的区别:前者返回的加之后的新值;后者返回的是加之前的旧值。
位运算:>> <<。(用于乘以2的n次方或者除以2的n次方)
程序流程控制结构:顺序结构、分支结构和循环结构。
分支结构:if分支、Switch...case和三目运算。
if分支:3种写法。
1、一个条件,一件事.
语法: if(条件){ 操作;}
2、一个条件,两件事。
语法:if(条件){ 操作; }else{ 默认操作; }
3、多个条件,多件事。
语法:if(条件1){ 操作1; }else if(条件2){ 操作2; } ... else{ 默认操作; }
注意:1、分支只要满足了一条路,就不会再走别的路
2、else if这句话有多少由程序员决定!
3、分支可以嵌套
Switch...case分支:(一般知道结果,才会使用它)
语法:switch(变量/表达式){ case 值1: 操作1; break; case 值2: 操作2; break; default: 默认操作; }
注意:1.case在进行比较时是进行的等值比较。不会进行隐式转换
2.case值相同时,操作一样是可以进行省略。
if与Switch分支的优缺点:前者优点:可以做范围判断;缺点:执行效率较慢,速度慢。后者优点:执行效率高,速度比较快;缺点:必须要知道最后的结果是什么才可以使它。
三目运算:语法:条件1?操作1:条件2?操作2:默认操作;
注意:1.默认操作不省略;
2.当只有一个条件和一个操作时,语法:条件&&(操作);操作的括号不能省略。
3.三目运算只适合操作只有一句话时,才能使用三目运算。
循环结构:for循环、while循环和do ...while循环。
循环三要素:1.循环条件:决定循环的次数
2.循环体:你所要进行的操作
3.循环变量:改变循环变量,让循环进行循环的关键条件。
循环的执行原理:首先创建出循环变量,判断循环条件,如果条件满足,则执行一次循环体操作,并不会退出循环,而会回过头再次判断循环条件满不满足,如果满足,则执行一次循环体操作.........直到循环条件不满足,才会退出循环
for循环:语法:for(var 循环变量=几;循环条件;循环变量变化){ 循环体; }
while循环(多用于做死循环):语法:var 循环变量=几; while(循环条件){ 循环体; 循环变量变化; }
do...while循环:语法:var 循环变量=几; do{ 循环体; 循环变量变化; }while(循环条件)
while与do..while的区别:当都执行一次时,条件满足时,结果相同;不满足时前者一次都不执行;后者至少执行一次。
死循环(不知道执行的次数时):语法:while(1){操作}和for(;;){操作}
退出死循环的方法:break - 退出整个循环
continue - 退出本次循环,但是会执行下面的循环
函数:function
使用函数的步骤:
1.定义函数
方法1:语法:function 函数名(){ 函数体/代码段; }
方法2:语法:function 函数名(形参,...){ 函数体/代码段; }
2.调用函数(可以无限调用)
1、在JS内部写:函数名()
2、在HTML页面上绑定事件:
<标签名 onclick="函数名()"></标签名>
何时使用函数: 1、不希望打开页面立刻执行
2、希望由用户来触发
3、以后每一个独立的功能都要封装为一个函数
4、函数的地位很高,是第一等公民地位
注意:传参的时候顺序是不能乱的,必须和形参的顺序一一对应上,数量也不要多也不要少。
面试题:循环与函数他们执行的时机不同。
强制数据类型转换:转字符、转数值和转布尔。
转字符:x.tostring()不能转换undefined和null。
string()全部都可以转等效于隐式的转换的底层原理。
页面上一切的数据js获取到后都是字符串类型!
转数字:parseInt(str/num) 把字符串和数字转换成整数,不认识小数点。
parseFloat(str)把字符串转换成数字,认识小数点。
执行原理:左向右依次读取每个字符,碰到非数字字符就停止转换,如果一来就不认识则为NaN。
number()全部都可以转等效于隐式的转换的底层原理。(只认数字)
转布尔:boolean()全部都可以转等效于隐式的转换的底层原理。
注意:只有6个会为false:0,"",undefined,null,NaN,false - 其余的全部都是true。