javascript快速学习
一、前提
至少有一门编程语言基础
二、js注释
1 | //这是单行注释 |
三、js输入输出
1 | alert(message); //浏览器弹出框 |
例子
1 | <button id="alert">点击出现提示框</button> |
1 | $(document).ready(function(){ |
1 | button{ |
四、变量
声明变量
var
是js关键字,用于声明变量。- name为变量名,通过变量名访问值。
- 变量命名遵循规则与C语言相同
1 | var name; //声明一个name变量 |
赋值
name = 18
为变量赋值18.
五、数据类型
javascript是一种弱类型语言(动态语言)。不必提前声明变量类型,在程序运行中会自动确定,js引擎根据右值判断类型。
简单数据类型
数据类型 | 说明 | 默认值 |
---|---|---|
Number | 数字型 | 0 |
Boolean | 布尔型 | false |
String | 字符串型 | “” |
Undefined | 未定义值,如var a; 却未赋值 | undefined |
Null | 空值 | null |
字符串
字符串嵌套:
str='这是一个"这是嵌套的字符串"字符串'
或"str=这是一个'这是嵌套的字符串'字符串"
。转义字符与C语言相似。
数据类型转换
1. 数字转字符串
方法 | 例 |
---|---|
toString()方法 | var num=20;var str = num.toString() |
String()强制转换 | var num=20;var str = String(num) |
加号拼接 | var num = 20;var str = num+"" |
2. 字符串转数字
方法 | 例 |
---|---|
parseInt(string) | parseInt('20'); 若输入为小数字符串则取整,错误则为NaN |
parseFloat(string) | parseFloat('20.21'); |
Number()强制转换 | Number('88'); |
js隐式转换 | '10'-0; |
3.转换布尔型
代表空或者否定的值会转换为false,如
''
,0
,NaN
,null
,undefined
其他值均为true
六、运算符
前置递增运算符
i++
与i--
后置递增运算符
++i
与--i
比较运算符
逻辑运算符
符号 | 说明 |
---|---|
&& | 逻辑与,两边同时为true时为true。 |
|| | 逻辑或,两边有一方为true则为true。 |
! | 条件为true时为false,条件为false时为true。 |
短路运算
语法 | 结果 |
---|---|
表达式1 && 表达式2 | 当表达式1为假时,不在计算表达式2,直接返回假。 |
表达式1 || 表达式2 | 当表达式一为真时,不再计算表达式2,直接返回真。 |
运算符优先级
七、流程控制
(一)、if分支语句
1 | if(条件表达式){ |
三元表达式:(条件表达式) : 表达式1 ? 表达式2;
(二)、switch多分支语句
1 | switch(表达式){ |
(三)、循环
1. for循环
1 | for(初始化变量;条件判断;循环一次后的操作){ |
2. while循环
1 | while(条件表达式){ |
3. do…while()循环
1 | do{ |
continue
关键字:跳过本次循环,进入下一次循环。
break
关键字:跳出循环,不再执行循环。
八、数组
(一)、创建方式
使用new创建数组。
利用数组字面量创建数组。
(二)、new创建数组
1 | var ArrayName = new Array(); |
(三)、数组字面量创建数组
1 | var ArrayName = [1,2,3]; //常用 |
九、函数
(一)、函数的使用
1. 声明函数
1 | function fnName(){ |
2. 调用函数
1 | fnName(); |
3. 函数的参数
1 | function fnName(parameter1,parameter2){ |
4. 函数的返回值
1 | function getSum(num1,num2){ |
5.arguments的使用
不确定实参个数时,使用arguments获取所有参数
1 | function fn(){ |
arguments并不是真正意义上的数组:
具有length
以索引进行存储
没有pop()与push()等数组方法
十、作用域
javascript作用域分为全局作用域与局部作用域
(一)、全局作用域
整个script标签可用,或单独的js文件可用
1 | <script> |
(二)、局部作用域
仅在函数内部起作用
1 | <script> |
在函数内部未经声明,直接赋值的变量也是全局变量
1 | <script> |
(三)、变量的销毁
全局变量:浏览器关闭时才会销毁。
局部变量:代码块结束后,就会被销毁。
(四)、作用域链
当函数中嵌套了函数,作用域链就产生了。
1 | var num = 10; |
十一、js运行步骤
javascript解析器在运行javascript语句时分两步:预解析和代码执行。
(一)、预解析
预解析分为变量预解析(变量提升)和函数预解析(函数提升)。
js解析器会将所有的var与function提升到当前作用域的最前面。
1. 变量预解析
不提升赋值操作
1 | console.log(num); |
2. 函数预解析
1 | fn(); |
(二)、代码执行
代码按照书写顺序,由上到下依次执行
十二、new的执行过程
在内存中创建空对象。
this指向空对象。
执行构造函数,并添加属性和方法。
返回新对象。
十三、js对象
(一)、内置对象
内置对象是指JS语言自带的对象,提供了一些常用的的或最基本而且必要的方法,能帮助开发者快速开发,如:Math,Date,Array,String等。
更多内置方法详见MDN
Array数组的一些方法
1 | var arr = new Array(3); //创建含有三个空元素的数组 |