写在开头本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了。答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章。对此,笔者换了随机阅读的方式,哪章感兴趣了或者想补知识点,再去翻阅对应的章节。当然目录还是要翻的。工作生活节奏太快,知识太多,时间与知识的增长成反比,求全不如求专,也许不能看完全书,但至少掌握所需知识点。思维导图是个好东西,一图流。语法标识符由字母,下划线_,美元符号$,数字组成第一个字符不能是数字注意不要使用关键字作标识符对象属性[]号写法可不遵循标识符规则 obj[123] = 123数据类型数据类型共有10个,ES5有7个,3个为ES6新增number/boolean/string/undefined/object/null/function/symbol/set/map判断类型可用typeof判断对象为何种引用类型可用instanceofundefined与nullundefined (使用var声明但未初始化)null (空对象指针)undefined == null // trueNaNNaN表示本来应返回一个数值,结果未正确返回NaN不等于任何值,且不等于自身用isNaN()可判断是否为NaN数值转换Number() 转型函数参数值结果true1false0null0undefinedNaN’‘0'168'168'168hello’NaN’hello’NaNTIPS:参数值为一个对象,则先调用valueOf(), 没有再调用toString(), 然后遵循上述规则parseInt()第一个参数为转换的值第二个参数为转换的进制会尝试解析字符串前面的数字(不同于Number())parseInt(‘168hello’) -> 168parseFloat()第一个小数点有效,忽略后面小数点的解析会尝试解析字符串前面的数字忽略前导0,只支持10进制,没有第二个参数 (不同于parseInt())parseFloat(‘520.13.14’) -> 520.14字符串转换toString() 方法大多数数据类型拥有toString()方法,可在参数中指定转换进制null/undefined 没有toString()方法String() 转型函数如果参数值有toString()方法,则调用toString()方法null 转为 “null"undefined 转为 “undefined"函数 function不支持重载后定义的函数会覆盖之前参数数组对象:arguments语句if…else…do…while… 后测试循环,不同于while/for前测试循环whileforfor…in… 遍历对象属性label 与 break/continue 合用switch…case… case 全等判断with 将代码作用域设置到特定的对象中switch…casecase 判断时是全等判断,不会进行类型转换case 值不一定是常量,可以是变量,甚至是表达式case ‘hello’ + ‘word’;case num < 10;labellabel语句允许在代码中添加标签,label与break/continue联合使用,可返回代码指定位置var num = 0;outermost:for (var i = 0; i < 10; i++) { for (var j = 0; j < 10; j++) { if ( i== 5 && j == 5) { break outermost; // 退出循环(因为outermost定义的位置在最外层) // 普通的break只能跳出一层循环 } }}withwith语句的作用是将代码的作用域设置到一个特定的对象// window.location 对象为例子with(location) { var url = href; // location.href}操作符一元操作符布尔运算符算数运算符关系运算符条件运算符赋值预算符逗号运算符一元操作一元操作符指的是只能操作一个值的操作符递增++递减–后置:语句被求值后执行自身赋值var a = 2;var b = 20;var c = a– + 20; // 后置运算 c: 22, a: 1布尔运算符逻辑非!!! 功能等于 Boolean() 转型函数逻辑与 &&第一参数是对象,返回第二个参数第一个参数为null/NaN/undefined, 则直接返回第一个参数逻辑或 ||规则与逻辑与相同,不同的是只要第一个参数成立则不会进行后续运算TIPS:逻辑与或都属于短路运算,并不一定返回true/false,参数未声明可能会报错或赋值不成功算数运算符+, -, *, /, % 关系运算符<, >, <=, >=, ==, ===, !=, !===两个参数都是数值,进行值比较两个参数都是字符串,进行字符编码比较(大写字母的字符编码小于小写字母)一个参数是数值,则转为数值比较一个参数是对象,则先调用其valueOf(),没有valueOf()再调用toString()=== 全等会进行值与类型的比较null == undefined // true条件运算符三元表达式var score = 90;var achie = score > 90 ? ‘优秀’ : ‘再接再厉’;逗号操作符逗号操作符可以在一条语句执行多个操作,常用于变量初始化TIPS: 用于赋值时,逗号操作符会返回表达式最后一项的值var name = ‘KenTsang’, age = 28, job = ‘Developer’;详解逗号表达式,可移步笔者的文章:《一道JS面试题引发的血案》。if-else/switch-case/?:/&&/||可移步笔者的文章: 《JS中 if/ if…else替换方式》参考文档《JavaScript高级程序设计》作者:以乐之名本文原创,有不当的地方欢迎指出。转载请指明出处。