读书笔记(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

如何使用Nikto漏洞扫描工具检测网站安全

转载链接&#xff1a;http://www.linuxidc.com/Linux/2011-02/32000.htm 【51CTO.com 独家特稿】随着信息技术的发展&#xff0c;网络应用越来越广泛&#xff0c;很多企业单位都依靠网站来运营&#xff0c;正因为业务的不断提升和应用&#xff0c;致使网站的安全性显得越来越重…

什么是区块链预言机(BlockChain Oracle)

预言机 Oracle 是区块链中非常重要的一个功能&#xff0c;但我发现很少有人讨论&#xff0c;也可能很多人对此并不了解。而网上关于预言机的文章很少&#xff0c;很多也没有讲明白&#xff0c;甚至有些还是错误的。所以我整理了一篇详细的文章&#xff0c;分享给大家&#xff0…

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

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

程序员素质面试题

技术题做完后&#xff0c;先检查技术是否合格&#xff0c;技术合格的并非就一定是合适人选&#xff0c;还要做素质面试。 如下是小y出的面试题&#xff1a; &#xff08;上进心&#xff09;1.你的职业规划是怎样的&#xff0c;未来两年想朝哪个方向发展&#xff1f; &#xff0…

用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 …

Linux源码安装mysql 5.6.12(cmake编译)

转载链接&#xff1a;http://www.2cto.com/database/201307/229260.html Linux源码安装mysql 5.6.12&#xff08;cmake编译&#xff09;1.安装make编译器(默认系统自带)下载地址&#xff1a;http://www.gnu.org/software/make/[c-sharp] tar zxvf make-3.82.tar.gz cd make-3.…

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

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

python删除数据库的数据完整代码_利用python操作小程序云数据库实现简单的增删改查...

不止python&#xff0c;你可以利用任何语言那实现通过http请求来操作你自己的小程序云数据库了背景也是在最近吧&#xff0c;小程序更新了云开发 HTTP API 文档&#xff0c;提供了小程序外访问云开发资源的能力&#xff0c;使用 HTTP API 开发者可在已有服务器上访问云资源&…

AI技术在智能海报设计中的应用

背景 在视觉设计领域中&#xff0c;设计师们往往会因为一些简单需求付出相当多的时间&#xff0c;比如修改文案内容&#xff0c;设计简单的海报版式&#xff0c;针对不同机型、展位的多尺寸拓展等。这些工作需要耗费大量的时间、人力成本&#xff08;5~6张/人日&#xff09;&am…

javaScript如何监听浏览器关闭事件

转载链接&#xff1a;http://www.cnblogs.com/Tim_Liu/archive/2010/11/09/1872596.html 最近写东西的时候发现需要对浏览器的关闭进行监听,当用户关闭的时候需要调用session.invalid();清空session信息,但是仔细一查手册发现无论是body还是window都没有onclose事件,之后onload…

C++树的实现

C树的实现 STL里面没有提供容器树的模板实现&#xff0c;自已写一个&#xff1a;Tree.h //tree.h 头文件 #include <list> #include <algorithm> using namespace std; struct TreeNode; //定义一个结构体原型 classTree; //定义一个类原型 classIterator; //定义一…

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

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

PHP,如何防止同一用户同一时间多次登录

转载链接&#xff1a;http://blog.sina.com.cn/s/blog_4832ea590101djnp.html PHP&#xff0c;如何防止同一用户同一时间多次登录&#xff1f; 创建表 username password sessionId 张三 123456 ksw9dkw9ksl92w3 备注&#xff1a;用户…

科技前沿智能创新 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;也许你…

VS2005调试时变慢解决办法

vs2005生成代码以及调试运行时&#xff0c;如果设置断点系统运行非常缓慢&#xff0c;从网上查阅一些资料后解决&#xff1a; 主要解决办法是&#xff1a; 打开VS2005菜单项"工具"---->"导入导出设置"----->"重置所有设置" 本文参考:http:…