ECMA 规范 对JS的进行规范
ES5 ECMAscript指的javascript/JScript
ES6
【注释】:
1、单行注释
2、多行注释
【语句】
如何判断一条语句的结束。判断条件:分号。
书写格式:
关键词 标识符(变量名) 运算符 表达式 分号
【标识符命名规范】
1、不能以数字开头
2、可以包含:数字、字母、下划线、美元符号$
不可以包含其他字符
3、不许使用JS的关键字和保留字
4、大小写敏感(注:严格区分大小写)
软性要求:
1、望文知意
【数据类型】
1、基本数据类型
数值:Number
字符型:String 文本
布尔型:True False
null 判断用户是否输入东西
Undefined:undefined 标识符声明,未赋值。不是报错
symbol(对象时讲解)
2、引入数据类型
Object 对象
判断当前标识符的数据类型
console.log(typeof i);
console 输出
typeof
cls:清空终端栏
标识符
数据结构:【变量】
1、声明变量
ES5
关键词 标识符 分号
var F68 ;
ES6
let F68 ;
conset F68 ;
【var和let\conset区别?】
var声明的变量可以重复
let 、conset 声明的变量不可以重复
报错:
Identifier ‘F69’ has already been declared 重复声明
【let 和 const的区别】
let是声明变量
const是声明常量,赋值后不可以再更改(注:基础数据类型)
报错:
‘F69’ is not defined:变量没声明:遗漏声明。
【作用域】
let F68 = 1;
{
let F69=2;
}
console.log(F68);
console.log(F69);
当给一个变量赋值 ,但未添加关键字。则关键字为var
【全局变量问题】
let F68=10;
{
console.log(F68); //10
}
let F68=10;
{
console.log(F68); //F68 is not defined
let F68=3;
}
原因:先使用后声明
如果在局部作用域中,先使用了一个变量。
后面用let或const才声明该变量。则会无视全局变量。
即生成暂时性死区。
//eg1
let F68=1;
{
console.log(F68);//1
}
console.log(F68);//1
//eg2
let F69=2;
{
let F69 =3;
console.log(F69);//3 局部不会影响全局
}
console.log(F69);//2
//eg3
{
let F70 =4;
console.log(F70)//4
}
console.log(F70);//F70 is not defined
//eg4
let F71 =4;
{
F71 =5; //补个var var是全局变量,修改之前的全局变量
console.log(F71);//5
}
console.log(F71)//5
【输出undefined的2种方式】
let F68;
console.log(“F68:”+ F68); //写好变量 没赋值 un
console.log(typeof F69); //没有声明的变量 un
【null】
let F67=null;
console.log(F67);//null
console.log(typeof F67);//object NULL是引入数据类型
【数值型number】
1、整型
let F68=123;
console.log(F68);
console.log(typeof F68);
2、实数
let F68=12.3;
console.log(F68);
console.log(typeof F68);
3、NaN : Not a number
F68=NaN;
console.log(F68);//NaN
console.log(typeof F68);//number
【布尔型】
console.log(11);//true
console.log(null == undefined);//true
//undefined 是从null中衍生出来的 所以相等
console.log(1 NaN);//False
console.log(“ABC” == NaN);//False
console.log(NaN == NaN);//False
//NaN特别之处在于跟谁比都是False
【如何判断当前内容是不是非数字】
isNaN(NaN)
console.log(isNaN(NaN));
非数字的话是true,数字为False
数据类型转换
console.log(isNaN(NaN));//true
console.log(isNaN(false));//false
console.log(isNaN(“123”));//false 去掉“” 隐式转换
console.log(isNaN(“abc”));//true
console.log(isNaN(123));//false
console.log(isNaN(undefined));//true
console.log(isNaN(null));//false 0
console.log(null == 0);//false 死记硬背
console.log(null == undefined)//true 死记硬背
/字符型
let F68=’“1”’;
let F69=“A”;
let F70=1;
console.log(F68);
console.log(F70);
console.log(typeof F68);
console.log(F69);
console.log(typeof F69);
数字是黄色
- : 如果左右出现字符串是字符串的拼接
let account = “罗忆虹”;
let age = 22;
let gender =“女生”
let marry = “未婚”;
console.log(“大家好,我叫”+account+",我是"+gender+",我今年"+age+“岁,至今”+marry);
console.log(typeof(age + gender));//string
let i = “1”+3;
console.log(i)
let dropmoney=“200”;
let blance=300;
blance = blance + dropmoney;
console.log(blance);
let num =1+2+3+4+‘5’;
console.log(num);
let num1 =“1”+2+3+4+5;
console.log(num1);
let num2 =1+2+“3”+4+5;
console.log(num2);
【字符串模板】
// let account = “小明”;
// let age = 22;
// let gender =“女生”
// let marry = “未婚”;
console.log(大家好,我叫${account},我是${gender},我今年${age}岁,至今${marry}
);
标识符:变量
表达式:可以得到结果的公式
【length】
字符的长度,一个空格一个长度。
除了字符串,其他类型长度为undefined
【算术运算符】
let i =2;
let j =1;
console.log(i+j);//3
console.log(i-j);//1
console.log(i*j);//2
console.log(i/j);//2
console.log(i%j);//0
//ES6新增
console.log(i ** 3);
【一元运算符】:自增
++i 先自增,再使用
i++ 先使用,再自增
let i = 2;
let k = ++i;
let j = i++;
console.log(k)
console.log(j);
// 3 3
let i = 2;
let j = i++;
let k = ++i;
console.log(j);
console.log(k)
//2 4
【赋值符号】
let F68 = 1;
F68 = F68 + 1;
F68 += 1;
F68 -= 1;
F68 *= 1;
F68 /= 1;
F68 %= 1;
console.log(F68);
【比较运算符】
console.log(1 == 1);
console.log(“1” == 1);
console.log(2>1);
console.log(1>2);
console.log(1!=2);
console.log(1===1);
console.log(“1”===1);//全等:值相等+类型也相等
console.log(1!==1);
console.log(“1”!==1);//不全等
【逻辑运算符】
let F68 = 300;
let F69 = (F68 % 5 == 0 && F68 % 6 != 0); //与 一假全假
console.log(F69);
let year = 2000;
(year%4 0 && year%100!=0) || year%4000 //或 一真全真
i = “A”;
if(i){
console.log(“true”);
}else{
console.log(“false”);
}//true
【转换成false】
数值型除了 0 -0 NaN之外都是1(true)
字符型除了"" 和’’ 和``都是1
null
undefined (没东西)
false
【与、或运算的原理】
let i =1 ;
let j =2 ;
let k =3 ;
console.log(1 && 2 && 3); //真返回后面,假 返回当前
let i =1 ;
let j =2 ;
let k =3 ;
console.log(1 || 2 || 3); //假返回后面,真 返回当前
【非】
! 取反
F68 != 1;
let i = true;
console.log(!i);//false
使用场景:
判断是不是纯数字
! isNaN(F68)
【三目运算符】
书写格式:
条件 ? 表达式1 :表达式2
功能:
条件为真,执行表达式1
条件为假,执行表达式2
比较两个数
let num1 =555;
let num2 =234;
num1>num2 ? console.log(num1):console.log(num2);
比较三个数
let num1 = 123;
let num2 = 234;
let num3 = 345;
(num1>num2)?
(num1>num3 ? console.log(num1):console.log(num3)) :
(num2>num3 ? console.log(num2):console.log(num3));
【位运算】 & | 按位进行转换
let i = 1;
let j = 2;
console.log(i & j);//0-false
let i = 1;
let j = 2;
console.log(i | j);//3
【隐式转换】
console.log(true == 1);//true
console.log(“a”<“b”);//true
console.log(1+2+3+“5”);//65
【显式转换】
let i =“123”;
let F68 = Number(i);
console.log(typeof F68,F68);
// let i =“abc”;
// let F68 = Number(i);
// console.log(typeof F68,F68);
// let i = true;
// let F68 = Number(i);
// console.log(typeof F68,F68);
// let i = undefined;
// let F68 = Number(i);
// console.log(typeof F68,F68); // number NaN
parseInt 只取值 不取单位 从第一个开始找,拿到非数字和空格为止
let i =“9a123px”;
let F68 = parseInt(i);//取整
console.log(typeof F68,F68);
/**
- parseInt
- 字符串转数值:
- 1、获取第一个数字到第一个非数字之前的内容.
- 2、第一位到第一个数字之间如果是0或字符,会自动无效
- 3、第一位不是数字,不是加减号、空格,就会返回NaN
- 使用场景:
- 获取标签尺寸(去除单位)
*/
let j =“123.500”;
let F69 = parseFloat(j);//取整
console.log(typeof F69,F69);
// F69.toFixed(2)/;
console.log(typeof F69,F69.toFixed(2));
/**
- parseFloat在parseInt的基础上能识别小数点,
*/
console.log(Math.ceil(j));//向上取整
console.log(Math.floor(j));//向下取整
console.log(Math.round(j));//四舍五入取整
// undefined 的类型为undefined
//数值转字符串
// let num =123;
// let F68 = String(num);
// console.log(typeof F68, F68)
let num = true;
let F68 = String(num);
console.log(typeof F68, F68)
【扩展】
toString
//string和toString的区别:
/**
- 书写方式
- String(转换的值)
- 转换的值.toString(进制)
- null 和undefined 没有tostring的方法
*/
【类型转换的快捷方式】
字符 -0 (Number)如果不是纯数字为NaN
非字符 +"" (String)
!!非布尔 (Boolean)
!1 = false