js基础知识概括(二)
** 基本语法**
1.区分大小写:a,A
2.语句以;结尾
3.标识符(变量);
4.硬性要求,必须满足变量条件,由数字,字母,下划线,$组成,并不以数字开头,不能使用关键字保留字
5.软性要求:望文知意
规则:
1.英文名称
2.驼峰 bigBox
3._ 下划线
4.变量前加上数组类型(匈牙利命名法) i_number arr_students
严格模式
“user strict” 能够让js进入严格模式
变量
存储值的容器,js中的值的类型可被修改,不同于其他静态语言
ES5 var ES6 let const
变量的声明赋值叫做变量的初始化 let number = 5;
------var
1.支持重复声明
var i = 5; console.log(i); var i = 10; console.log(i)
2.变量可以存储任意数据类型
var a = 10; a = "nihao"; console.log(a)
3.遗漏声明 严格模式报错 禁止变量未声明就使用
a = 10; console.log(a);
-------let
1.不支持重复声明
let i = 5; let i = 10; console.log(i)//报错
2.块级{}作用域限制
let i = 5; console.log(i); { let i = 10; console.log(i); } if(){} for(){} function(){}
3.var会变量提升,let不提升
console.log(a);//undefined var a = 5;
4.------const
定义变量
1.const声明的值不可被修改
const a = 5; a = 6; console.log(a)//报错
2.对于复杂数据类型,在不改变引用的情况下,可以被修改
3.const声明的变量必须赋值
let和const都是ES6中新增的变量声明方式。
常量也是变量的一种,只是我们不希望某个值被修改,所以才以常量的方式声明出来。
ES6前变量名称全大写
var GENDER = “male”
-----数据类型
每一个值都必须属于某一种数据类型
简单数据类型 基本数据类型 简单值
复杂数据类型 引用数据类型 复杂值
----ES5基本数据类型:
1.undefined 未定义
2.null 空
3.number 数字
4.boolean 布尔值
5.string字符串
ES6新增第六个:
6.symbol
复杂数据类型:
object
------undefined
声明变量未赋值,函数没有返回值,都是undefined
let a console.log(a)//undefined
函数调用完毕如果没有明确返回值,返回undefined
下列情况会返回undefined:
1.访问没有赋值的变量
2.任何被赋值为undefined的变量
3.函数无明确返回值
4.访问对象不存在的属性
-----null
ECMA认为undefined是从null衍生而来的,如果不进行精确比较,则相等
console.log(null == undefined);//true console.log(null === undefined);//false
"=" 赋值:等号右边赋值给左边
let a = 5;//5赋值给a
"===" 全等:值相等,数据类型也相等
“==” 等于
typeof:查看数据类型
console.log(typeof null);//object 历史遗留bug
-----boolean:true,false
任何数据类型都可以转为boolean,会返回false的情况;
1.单,双引号的空字符串‘’ “” 空字符串模板 ``;
- 0;
3.NaN(not a number);
4.false;
5.null
6.undefined
console.log(Boolean(undefined))
-----number:整数,小数,负数都支持
let number1 = 3; let number2 = 3.14(浮点数); let number3 = -5; let number4 = -666; let number5 = -6.66;
NaN非数本来要返回数值的操作未返回数值
1.console.log(typeof NaN);//number
2.涉及到NaN的计算都会返回NaN;
3.NaN不与任何值相等,包括它自己;
4.isNaN()判断一个值是否是非数;
console.log(isNaN(5));//false console.log(isNaN("abc"))//true
即 传入非数字返回true,反之则为false;
-------数据类型转换
两类:1.隐式转换
1.进行比较的时候,string -> number;
2.进行判断时,转为boolean;
3.进行计算时,string -> number
4.数字减去空字符串,空字符串转换为0;
5.数字减去布尔值true或false,true转换为1,false转换为0;
6.数字减去undefined,undefined -> NaN;
7.数字减去null,null -> 0;
8.数字减去symbol, symbol -> NaN;
`console.log("5">4);//true
if(1){
console.log(111)//111
}
console.log("2" * 5)//10
console.log(5 - "abc")//NaN
console.log(5 - "")// 5
console.log(5 - true)//4
console.log(5 - false)//5
console.log(5 - undefined)//NaN
console.log(5 - null)//5
console.log(5 - symbol)//NaN
2.显式转换
1.parseInt();将string 转为 number,从左往右依次转换直到转到非数为止。(转换为整数)
2.parseFloat():转小数(浮点数),转换规则同parseInt();
3.Number():整体转换,字符串中有非数,则为非数;
4.转换为数值类型的简便方式,字符串 - 0;
5.String():转换为字符串;
6.快速转换为字符串,;例如123 + ”“ // ”123“
7.转换为布尔类型的值;
8.快速转换布尔类型的值 用”!“取反,或”!!“双重取反;
`console.log(parseInt("123"))//123
console.log(parseInt("123abc"))//123
console.log(parseInt("abc123"))//NaN
console.log(parseInt("12.333"))//12
console.log(parseFloat("1.23adc"))//1.23
console.log(parseFloat("abc1.2333"))//NaN
console.log(Number("123abc"))//NaN
console.log(Number("123"))//123
console.log("123" - 0);//123
console.log(String(123))"123"
console.log(typeof(String(undefined)));//"undefined"
console.log(123 + "");//"123"
console.log(Boolean("abc"));//true
console.log(!"abc");//false
console.log(!!"abc");//true
console.log(2 == true);//false 因为true转换成了1 boolean -> Number
//从左往右依次计算
console.log(1<2<3);//true 1<2为true true转换了1,1<3
console.log(3<2<1);//true 原理同上`
------运算符
1.赋值运算符: =,+=,-=,*=,/=;
let a = 1; let b = 2; a += b; console.log(a)//3
2.一元运算符(只能操作一个值的运算符);
++ --;
i++:先赋值后自增,++i:先自增后赋值
3.逻辑运算符 与 或 非
1.非(!):非真即假,非假即真 ; !条件1
2.或(||):n选1,n里面有一个为真就为真;条件1 || 条件2
3.与(&&):两个条件同时满足;条件1 && 条件2
4.算数符号:
指数:2的3次方 2* 2 *2 2**3
5.关系运算符:
,=,<,>,<=,>=
6.三目运算符
表达式1? 表达式2:表达式3
表达式1为true执行表达式2,为false执行表达式3
运算也存在优先级,加();
-----流程控制
流程控制的走向。
- 顺序结构
- 选择结构
- 循环结构
------选择结构 if (单分支),if else(双分支),if else if(多分支)。
`if(TJ){
//内容1;
}else{
//内容2;
}`
-------精度
单精度,多精度
` * ---- 多分支
- if(条件1){
-
执行1... - }else if(条件2){
-
执行2... - }else if(条件n){
-
执行 n... - }else{
- 都不满足就...
- }
** ---- switch
switch (条件) {
case A: // 满足条件A
...;
break; // 打断
case B:
...;
break;
...
default: // 默认
...;
}
switch 的 case 全等匹配 ===`
------ while循环
while(条件){
代码块...
}
例如:
let num = 1, sum = 0; while (num <= 100) { sum += num; num++; } console.log(sum);
------ do...while循环
let num = 1; do{ num++ }while(false); console.log(num);//2
------for while do while3种循环的区别
for和 while 前测试语句,do while后测试语句
-------打断循环:break continue
break:退出当前循环。
continue:退出本次循环。
for(let i = 0 ; i <= 5 ; i++){ if(i == 3){ continue;//0,1,2,4,5 如果为brerk,输出结果为0,1,2 }else{ console.log(i); } }
------双重for循环
for(){ for(){ } }
浙公网安备 33010602011771号