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.单,双引号的空字符串‘’ “” 空字符串模板 ``;

  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

运算也存在优先级,加();

-----流程控制

流程控制的走向。

  1. 顺序结构
  2. 选择结构
  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(){ } }

posted on 2020-12-26 13:12  wpwp123  阅读(150)  评论(0)    收藏  举报