标识符:所谓的标识符,就是指变量、函数、属性的名字,或者函数的参数。标识符主要有以下规则:首字符必须是字母、下划线_或者美元符$其他字符可以是字母、下划线_、美元符$或者数字标识符的命名遵循驼峰命名,即myCar用var操作符定义的变量将成为定义该变量的作用域中的局部变量.也就是说,如果在函数中使用var定义一个变量,那么这个变量在函数退出后就会被销毁,如:function test() { var message = “hi”;}test();console.log(message); //错误a = 5 // 省略var操作符,创建的是一个全局变量javascript数据类型:基本数据类型: number, string, boolean, undefined, symbol, null复杂数据类型: object (三种引用类型: function, arrary, object)特殊值: NaN, undefined, nullNaN有以下两个特点:1.任何涉及NaN的操作都会返回NaN,包括NaN/0 // NaN.2.NaN与任何值都不相等,包括NaN本身,NaN==NaN // false.鉴于上面两点,判断一个变量是否是NaN需要使用javascript提供的isNaN()方法,例: NaN.isNaN() // trueundefined声明但是没有初始化的变量的值即为undefined,可以理解为此处应该有一个值,但是实际上没有,我们给它一个默认值undefined// 声明的变量var a; //相当于var a=undefined;console.log(typeof a); //undefiend// 注意一下未声明的变量会直接报错的console.log(b); //!报错 b is not definednull是表示缺少的标识,指示变量未指向任何对象,如果定义的变量准备在将来用于保存对象时,那么最好将变量初始化为nulltypeof操作符返回一个字符串,表示未经计算的操作数的类型let s = Symboltypeof 5 ———> numbertypeof NaN ——-> numbertypeof ‘a’ ——-> stringtypeof true ——> booleantypeof undefined -> undefinedtypeof s ———> symbollet fn = function() {}typeof null ——> objecttypeof [] ——–> objecttypeof {} ——–> objecttypeof fn ——–> functioninstanceof运算符用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置基本类型使用字面量赋值,使用instanceof并不能判断其变量类型,因为字面量就是我们所见到的字符,没有调用构造函数,也就不能在原型上找到let a = 5a instanceof Number // falselet b = falseb instanceof Boolean // falselet c = Symbolc instanceof Symbol // false但是复杂类型使用字面量赋值时,往往能判断其变量类型,这是因为在js中根本不存在真正的空对象,即使是最简单的{}对象也会包含从Object.prototype继承而来的属性和方法let obj = {}obj instanceof Object // true[] instanceof Array // true// 注意null instanceof Object // falsejavascript常用方法:# 1.Number number.isNaN() // 判断是否是NaN number.toFixed(2) // 保留小数点后两位 number.toString() // 将数字转换成字符串 Number可以配合Math对象来使用 Math.random() // 随机取0-1的数 Math.abs(number) // 取绝对值 Math.round(number) // 四舍五入 Math.floor(number) // 向下取整 Math.ceil(number) // 向上取整 # 2.String // 后续补全# 3.Array // 后续补全javascript语法:==/!=先转换再比较(强制转型) ===/!==仅比较不转换null == undefined; //true 它们是类似的值null === undefined; //false 它们是不同类型的值//var max = (num1>num2) ? num1 : num2 //条件操作符又称三元运算符//当判断一个范围时请使用if语句var scroe = 80if(scroe >= 90) { console.log(“成绩为优”);}else if(scroe >= 80) { console.log(“成绩为良”)}else if(scroe >= 60) { console.log(“成绩为及格”)}else { console.log(“成绩为不及格”);}//在对比有限个值时,值不能太多,一般在1-4之间,使用switch语句switch(m) { case x: //语句 break; case y: //语句 break; default: //语句 break;}//循环次数已知,选择for循环for(初始化条件表达式;条件表达式;条件改变表达式) { //循环体}//循环次数未知,但是循环结束条件已知选择while语句while(条件表达式) { //循环体}//循环体至少执行一次时,选择do while语句 例如:要先考试才能知道是否及格do{ //循环体}while(条件表达式)var score = 48;do { console.log(‘没及格,需要再来考试!’); score += 15;} while (score < 60);for-in语句是一种精准的迭代语句,可以用来枚举对象的属性,但是是无序的var person = { name: “张三”, age: 20} for (var item in obj) { console.log(item); console.log(obj[item]);}//break 直接跳出循环var num = 0;for (var i = 1; i < 10; i++) { if (i % 5 == 0) { break; } num++;}console.log(num); //4 当i=4时,num=4,再执行循环i=5,跳出循环,下面的num++并没有执行,此时num还是4;//continue 跳出本次循环,继续执行下面的循环var num = 0;for (var i = 1; i < 10; i++) { if (i % 5 == 0) { continue; } num++;}console.log(num); //当i=4和9时,跳过了num++,循环完成时num=8;// 函数执行完之后会立即销毁!!!function sum(num1, num2) { return num1 + num2; //函数是否需要返回值是要看我们是否需要用到函数的返回值}function hello() {//函数在执行完return之后会立即退出 return; console.log(‘你好,世界!’); //这段语句不会执行}