获得徽章 9
- 【书名】《JavaScript权威指南》第七版
【笔记】多分支流程除了使用if else,使用switch可能更合适。switch需要传入一个值,然后每个值和case对比,对比完一般需要使用break中断执行,break语句将导致解释器跳到switch语句末尾(或“跑出”switch语句),继续执行后面的语句。switch语句中的case子句只指定了预期代码的起点,并没有指定终点。在没有break语句的情况下,switch语句从匹配其表达式值的case代码块开始执行,一直执行到代码块结束。这种情况偶尔是有用的,比如让代码执行流从某个case标签直接“穿透”到下一个case标签。但99%的时候还是需要注意用break语句来结束每个case(不过在函数中使用switch时,可以使用return语句而非break语句。这两个关键字都可以终止switch语句,阻止执行流进入下一个case)。展开赞过评论2 - 【书名】《JavaScript权威指南》第七版
【笔记】JavaScript字符串是16位整数值的序列,而字符串比较就是比较两个字符串的数值序列。Unicode定义的这个数值编码顺序不一定与特定语言或地区使用的传统校正顺序(collation order)匹配。特别要注意字符串比较是区分大小写的,而所有大写ASCII字母比所有小写ASCII字母都小。如果不留意,这条规则很可能导致令人不解的结果。
如果需要更可靠的字符串比较算法,可以用String.localeCompare()方法,这个方法也会考虑特定地区的字母表顺序。要执行不区分大小写的比较,可以使用String.toLowerCase()或String.toUpperCase()把字符串转换为全小写或全大写。
+操作符和比较操作符同样都会对数值和字符串操作数区别对待。+偏向字符串,即只要有一个操作数是字符串,它就会执行拼接操作。而比较操作符偏向数值,只有两个操作数均为字符串时才按字符串处理。展开评论点赞 - 【书名】《JavaScript权威指南》第七版
【笔记】关系表达式
JavaScript对象是按引用而不是按值比较的。对象与自己相等,但与其他任何对象都不相等。即使两个对象有同样多的属性,每个属性的名字和值也相同,那它们也不相等。类似地,两个数组即使元素相同、顺序相同,它们也不相等。
如果一个或两个值是NaN,则不相等(虽然有点意外,但NaN确实不等于任何其他值,也包括NaN自身!要检查某个值x是不是NaN,使用x !== x或全局isNaN()函数)。
对象转换为原始值时要么使用其toString()方法,要么使用其valueOf()方法。JavaScript内置的核心类先尝试使用valueOf(),再尝试toString()。但Date类是个例外,这个类执行toString()转换。展开评论点赞