读书笔记(06) - 语法基础 - JavaScript高级程序设计

语法基础

写在开头

本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了。

答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章。
对此,笔者换了随机阅读的方式,哪章感兴趣了或者想补知识点,再去翻阅对应的章节。当然目录还是要翻的。

工作生活节奏太快,知识太多,时间与知识的增长成反比,求全不如求专,也许不能看完全书,但至少掌握所需知识点。


语法基础
思维导图是个好东西,一图流。

语法

标识符

  1. 由字母,下划线_,美元符号$,数字组成
  2. 第一个字符不能是数字
  3. 注意不要使用关键字作标识符
  4. 对象属性[]号写法可不遵循标识符规则 obj[123] = 123

数据类型

数据类型共有10个,ES5有7个,3个为ES6新增

number/boolean/string/undefined/object/null/function/symbol/set/map
  1. 判断类型可用typeof
  2. 判断对象为何种引用类型可用instanceof

undefined与null

  1. undefined (使用var声明但未初始化)
  2. null (空对象指针)
undefined == null // true

NaN

NaN表示本来应返回一个数值,结果未正确返回

  1. NaN不等于任何值,且不等于自身
  2. isNaN()可判断是否为NaN

数值转换

Number() 转型函数

参数值结果
true1
false0
null0
undefinedNaN
''0
'168'168
'168hello'NaN
'hello'NaN

TIPS:参数值为一个对象,则先调用valueOf(), 没有再调用toString(), 然后遵循上述规则

parseInt()

  1. 第一个参数为转换的值
  2. 第二个参数为转换的进制
  3. 会尝试解析字符串前面的数字(不同于Number())
parseInt('168hello') -> 168

parseFloat()

  1. 第一个小数点有效,忽略后面小数点的解析
  2. 会尝试解析字符串前面的数字
  3. 忽略前导0,只支持10进制,没有第二个参数 (不同于parseInt())
parseFloat('520.13.14') -> 520.14

字符串转换

toString() 方法

  1. 大多数数据类型拥有toString()方法,可在参数中指定转换进制
  2. null/undefined 没有toString()方法

String() 转型函数

  1. 如果参数值有toString()方法,则调用toString()方法
  2. null 转为 "null"
  3. undefined 转为 "undefined"

函数 function

  1. 不支持重载
  2. 后定义的函数会覆盖之前
  3. 参数数组对象:arguments

语句

  1. if...else...
  2. do...while... 后测试循环,不同于while/for前测试循环
  3. while
  4. for
  5. for...in... 遍历对象属性
  6. labelbreak/continue 合用
  7. switch...case... case 全等判断
  8. with 将代码作用域设置到特定的对象中

switch...case

  1. case 判断时是全等判断,不会进行类型转换
  2. case 值不一定是常量,可以是变量,甚至是表达式
case 'hello' + 'word';
case num < 10;

label

label语句允许在代码中添加标签,labelbreak/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只能跳出一层循环}}
}

with

with语句的作用是将代码的作用域设置到一个特定的对象

// window.location 对象为例子
with(location) {var url = href; // location.href
}

操作符

  1. 一元操作符
  2. 布尔运算符
  3. 算数运算符
  4. 关系运算符
  5. 条件运算符
  6. 赋值预算符
  7. 逗号运算符

一元操作

一元操作符指的是只能操作一个值的操作符

  1. 递增++
  2. 递减--
  3. 后置:语句被求值后执行自身赋值
var a = 2;
var b = 20;
var c = a-- + 20;   // 后置运算 c: 22, a: 1

布尔运算符

逻辑非!

!! 功能等于 Boolean() 转型函数

逻辑与 &&
  1. 第一参数是对象,返回第二个参数
  2. 第一个参数为null/NaN/undefined, 则直接返回第一个参数
逻辑或 ||

规则与逻辑与相同,不同的是只要第一个参数成立则不会进行后续运算

TIPS:逻辑与或都属于短路运算,并不一定返回true/false,参数未声明可能会报错或赋值不成功

算数运算符

+, -, *, /, % 

关系运算符

<, >, <=, >=, ==, ===, !=, !===
  1. 两个参数都是数值,进行值比较
  2. 两个参数都是字符串,进行字符编码比较(大写字母的字符编码小于小写字母)
  3. 一个参数是数值,则转为数值比较
  4. 一个参数是对象,则先调用其valueOf(),没有valueOf()再调用toString()
  5. === 全等会进行值与类型的比较
  6. 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高级程序设计》
作者:以乐之名
本文原创,有不当的地方欢迎指出。转载请指明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最近做了一个安装包的安装流程图

最近到做安装包的详细设计。下图是安装包的流程图&#xff0c;如果有什么意见和建议&#xff0c;希望大家给我留言&#xff0c;大家以前讨论 转载于:https://www.cnblogs.com/zengshengping815/archive/2009/04/22/1441319.html

idea tomcat启动成功但是访问方面都是404_IDEA相关配置【集成Tomcatamp;项目部署】...

“知其然知其所以然”始终是Brick我学习新兴技术的出发点&#xff0c;那么咱们来聊聊以下几个问题问题1&#xff1a;在编写完web项目之后&#xff0c;我们怎么才能运行项目呢&#xff1f;--需要部署项目到Tomcat上。问题2&#xff1a;部署项目到Tomcat服务器有多少种方式&#…

用U盘或移动硬盘安装Windows7 (超简单制作Win7安装U盘方法)

转载链接&#xff1a;http://www.iplaysoft.com/win7-usb-dvd-download-tool.html 最近很多人想要安装 Windows7 &#xff0c;下载回去后的ISO镜像文件很多人都是使用 Nero 或 IMGBurn 等工具刻录成光盘来安装的。但实际上&#xff0c;不需刻盘安装Win7的方法还是有不少的。…

安装pywin32时:ImportError: DLL load failed: %1 不是有效的 Win32 应用程序和 DLL load failed...

问题一&#xff1a;ImportError: DLL load failed: %1 不是有效的 Win32 应用程序 import pywinapi报错:ImportError: DLL load failed: %1 不是有效的 Win32 应用程序 原因&#xff1a;与python版本不对应 pypi官网上下载whl文件,我的python 版本为27 下载第一个后安装 下载文…

pointcut注解_Spring AOP使用指南,详细了解AOP相关注解

Spring AOP 指导教程什么是Spring AOP spring aop可以在spring构建的系统中使用面向切面编程。当然Spring Boot也是基于Spring构建的。使用AOP可以实现诸如事务&#xff0c;日志以及安全校验等通过切面统一完成的任务。他可以通过简单的注解方式实现在方法执行前后来执行你自己…

C# 实现FTP上传与下载

向FTP服务器下载文件的简单实例 Codestring filePath "d:\\"; string fileName "lhking.txt"; //文件下载之后要保存的路径和文件名 FtpWebRequest reqFTP; try { FileStream outputStream …

云栖专辑 | 阿里开发者们的第6个感悟:享受折磨

2015年12月20日&#xff0c;云栖社区上线。2018年12月20日&#xff0c;云栖社区3岁。阿里巴巴常说“晴天修屋顶”。在我们看来&#xff0c;寒冬中&#xff0c;最值得投资的是学习&#xff0c;是增厚的知识储备。所以社区特别制作了这个专辑——分享给开发者们20个弥足珍贵的成长…

加密文件忘记密码怎么解密_MyBatis 配置文件 用户密码加密存储

properties配置文件一般是使用properties保存配置文件内容,然后在mybatis配置文件中进行读取在resource文件下新建db.properties文件内容如下# 数据库配置文件 driver com.mysql.cj.jdbc.Driver url jdbc:mysql:// /mybatis username password 然后,接着把文件放入源码包…

科技前沿智能创新 2019北京智能家居 全屋智能博览会

2019北京智能家居大型展览会 2019北京全屋智能家居博览会报道布展&#xff1a;2019年6月26日-27日 展会开幕&#xff1a;2019年6月28日上午9&#xff1a;00时展会交易&#xff1a;2019年6月28日-30日 展会撤展&#xff1a;2019年6月30日下午14&#xff1a;00时 展览会在北京市政…

java 容器_我也来聊聊,JAVA容器与迭代器

java的容器与迭代器是一个老生常谈的话题了。本文旨在与大家分享一些关于双向链表与迭代器的运用小技巧&#xff0c;并希望本篇文章的内容能够在项目中给你带来帮助。Stack与LinkedListStack是一个LIFO(后进先出)的容器。若要在java中定义一个Stack应该怎么办&#xff1f;也许你…

apache目录的访问控制

转载链接&#xff1a;http://blog.sina.com.cn/s/blog_7be8a2150100trml.html 1.根目录的访问控制 DocumentRoot "/var/www/html" <Directory /> Options FollowSymLinks AllowOverride None </Directory> 解释一下&#xff1a; <Dir…

广东高院驳回快播对深圳市场监管局2.6亿罚款案上诉

雷帝网 乐天 12月29日报道据广东高院官方微信消息&#xff0c;广东省高级人民法院对深圳市快播科技有限公司&#xff08;简称快播&#xff09;诉深圳市市场监督管理局&#xff08;简称市场监管局&#xff09;著作权行政处罚纠纷案作出终审宣判&#xff0c;驳回上诉&#xff0c;…

shell 练习3

1、编写脚本/root/bin/createuser.sh&#xff0c;实现如下功能&#xff1a;使用一个用户名做为参数&#xff0c;如果指定参数的用户存在&#xff0c;就显示其存在&#xff0c;否则添加之&#xff1b;显示添加的用户的id号等信息2、编写脚本/root/bin/yesorno.sh&#xff0c;提示…

两个数组结果相减_学点算法(三)——数组归并排序

今天来学习归并排序算法。分而治之归并算法的核心思想是分而治之&#xff0c;就是将大问题转化为小问题&#xff0c;在解决小问题的基础上&#xff0c;再去解决大问题。将这句话套用到排序中&#xff0c;就是将一个大的待排序区间分为小的待排序区间&#xff0c;对小的排序区间…

ASP记数器

这两天有好几个老的ASP网站要改&#xff0c;其中有要求加记数器&#xff0c;为图简单&#xff0c;就用文本文件的形式存储记数。以前用ifream的形式嵌入&#xff0c;不能很好的控制记数器显示的风格&#xff0c;现在改进了一下&#xff0c;可以很好的与嵌入板块风格结合了。把做…

[转] DevExpress 第三方控件汉化的全部代码和使用方法

DevExpress.XtraEditors.Controls 此控件包中包含的控件最多&#xff0c;包括文本框&#xff0c;下拉列表&#xff0c;按钮&#xff0c;等等 DevExpress.XtraGrid 网格 DevExpress.XtraBars 菜单栏 和 工具栏 DevExpress.XtraNavBar 导航条 DevExpress.XtraPr…

福音!微信个人公众号可以改名了!

微信个人公众号可以改名了&#xff01;&#xff01;&#xff01;今年&#xff0c;我们学校从景德镇陶瓷学院更名为景德镇陶瓷大学&#xff0c;但苦于微信限制&#xff0c;很多微信公众号无法更名。很多组织社团就放弃了原先的关注量&#xff0c;重新申请注册账号。当前我们的订…

js list删除指定元素_删除js数组中的指定元素,有这两步就够了

js数组是js部分非常重要的知识&#xff0c;有时我们有这么个需求js数组删除指定元素&#xff0c;先定义一个函数来获取删除指定元素索引值&#xff0c;然后用js数组删除的方法&#xff0c;来删除指定元素即可&#xff0c;就两步不难&#xff0c;很简单。1、JS的数组对象定义一个…

计算机协会丨让技能得到提升,让思维受到启迪

“ 各位2016级新生&#xff0c;新的学期马上就要开始了&#xff0c;学校的各个组织和社团你真的了解了吗&#xff1f;在眼花缭乱的社团里如何找到自己真正喜欢的呢&#xff1f;或许看完计算机协会的纳新微信你就都明白啦&#xff01;关键词&#xff1a;计算机协会景德镇陶瓷大学…

ondestroy什么时候调用_尾调用和尾递归

尾调用1. 定义尾调用是函数式编程中一个很重要的概念&#xff0c;当一个函数执行时的最后一个步骤是返回另一个函数的调用&#xff0c;这就叫做尾调用。注意这里函数的调用方式是无所谓的&#xff0c;以下方式均可&#xff1a;函数调用: func()方法调用: obj.method()call调用:…