内容
---语法 本小节
---数据类型 本小节 undefined,null,Boolean
---流程控制语句
---理解函数

任何语言的核心都必然会描述这门语言最基本的工作原理。
而描述的内容通常都要涉及这门语言的语法、操作符、数据类型、内置功能等,
用于构建复杂解决方案的基本概念

语法
---ECMAScript语法大量借鉴C及类C语言(如java,Perl)

区分大小写
---一切(变量、函数名、操作符)都区分大小写

标识符
---变量、函数、属性的名字或者参数
---第一个字符必须是,字母、下划线(——)或者一个美元符号($)
---其他字符可以是字母、下划线、美元符号、数字。

标识符采用驼峰大小写格式
---firstSecond
---myCar
---doSomethingImportant

--不能把关键字、保留字、true、false、null用作标识符。

注释
//单行注释
/* */块级注释
/*
* 惯用写法
*/

严格模式
--es5引入了严格模式(strict mode)的概念
--为JavaScript定义了一种不同的解析和执行模型
--在严格模式下 es3的一些不确定行为得到处理,不安全操作也会跑错

要启用严格模式 可在顶部添加:

"use strict";

--编译指示(pragma)

也可在函数内部启用严格模式:
function doSomething() {
"use strict";
//函数体
}

--严格模式下,JavaScript执行的结果会有很大不同

语句
--以分号(;)结尾,如果省略则由浏览器确定语句的结尾(不推荐)
----避免不完整输入、利于代码压缩、增加性能
var sum = a + b //即使没有分号也是有效的语句--不推荐
var diff = a - b; //有效的语句--推荐

--不要省略代码块 即使只有一条语句 降低修改代码出错几率
if(test)
alert(test); //有效但容易出错、不要使用
if(test) {
alert(test); //推荐使用
}

关键字和保留字
--关键字,用于表示控制语句的开始和结束,或者用于执行特定操作
--保留字,目前没用,但是可能将来被用作关键字

ECMAScript的全部关键字(带*号的是es5新增的关键字)
break, do, instanceof, typeof, case, else,
new, var, catch, finally, return, void,
continue, for, switch, while, debugger*,
function, this, with, default, if, throw,
delete, in, try

es3全部保留字
abstract, enum, int, short, boolean, export, interface, static,
byte, extends, long, super, char, final, native, synchronized,
class, float, package, throws, const, goto, private, transient,
debugger, implements, protected, volatile, double, import, public

在es5把非严格模式下运行时的保留字缩减为:
class, enum, extends, super, const, export, import
在严格模式下,还对以下保留字施加了限制:
implements, package, public, interface, private, static, let, protected, yield

--let和yield(异步编程有关)是es5 保留字
--使用关键字会导致 ,identifier expected(预期标识符),错误
--使用保留字,可能不会出错,具体看特定的引擎
--es5中 可以把关键字和保留字用于对象的属性名,不建议
--es5对eval和arguments也施加了限制,在严格模式下不能作为标识符和属性名

变量
--ECMAScript的变量是松散类型,即可以用来保存任何类型的数据
--变量仅仅是一个用于保存值的占位符
--定义变量时要用var操作符(关键字)

var message;

--定义但是未初始化会保存一个特殊值----undefined

--定义并初始化

var message = "hi";
message = 100; //有效的是不推荐,修改变量的保存值类型

--使用var操作符定义的变量将成为定义该变量作用域中的局部变量
--在函数中使用var定义变量,在函数退出后会被销毁

function test() {
var message = "hi"; //局部变量
}
test();
alert(message); //错误!

--未经声明的变量赋值时,省略var操作符,会声明全局变量
--不推荐,在局部作用域中定义全局变量很难维护
--严格模式下,未经声明的变量赋值会导致抛出ReferenceError错误

--可以使用一条语句定义多个变量,初始化可选,用逗号隔开

var message = "hi",
found,
age = 29;

--使用换行和缩进增加可读性
--严格模式下,不能定义名字是eval和arguments 的变量

数据类型
--ECMAScript中有5种简单数据类型(基本数据类型)和一种复杂数据类型
----基本数据类型:undefined、null、Boolean、Number、String
----复杂数据类型:Object,本质上是由一组无序的名值对组成的
--ECMAScript不支持创建自定义类型的机制
--因为ECMAScript数据类型是动态性的,也没有再定义其他数据类型的必要了

typeof操作符
--因为ECMASript是松散类型,因此需要一种手段来检测给定变量的数据类型-typeof

一个值使用typeof操作符可能返回:
--undefined,值未定义
--boolean, 布尔值
--string, 字符串
--number, 数值
--object, 对象或者null
--function, 函数

--typeof是操作符不是函数()括号不是必须的
--typeof null//object,是因为特殊值null被认为是一个空的对象引用
--safari5之前,chrome7之前版本对正则表达式调用typeof 返回function 而其他浏览器返回object
--从技术角度,函数在ecmascript中是对象,不是数据类型,
然而函数也有特殊属性,所以用过typeof可以区分函数和其他对象

undefined类型
--只有一个值 特殊的undefined,在使用var声明变量是未初始化时这个变量值就是undefined
--没必要初始化为undefined,因为未初始化值默认为undefined

--声明未定义和未声明不同

var message;
alert(message); 'undefined'
alert(age); 错误

--对声明未定义和未声明使用typeof,返回的都是undefined
--所以尽量显示的初始化变量,这样我们时候typeof 返回undefined时,就知道是未声明

null类型
--第二个只有一个值(null)的数据类型
--逻辑上表示一个空的对象指针,所以 typeof null => object
--定义变量准备用于保存对象,那么初始化为null最好不过

if(car != null) {
//对car对象的某些操作
}

--实际上,undefined值派生自null值,所以

null == undefined //true

boolean类型

--使用最多的类型之一,两个值,true和false。
--区分大小写
--虽然boolean类型字面值只有两个,但是ECMAScript中所有类型都有与之等价的值
--可调用Boolean()转型函数,将一个其他类型的值转化其对应的boolean值
--转型规则

数据类型 true false
Boolean true false
String 任何非空字符串 ""(空字符串)
Number 任何非零数字值(包括无穷大) 0和NAN(不是数值)
Object 任何对象 null
undefined n/a(不适用) undefined

--判断语句中会自动执行Boolean转换

《JavaScript高级程序设计》读书笔记(三)基本概念第一小节的更多相关文章

  1. 《javascript高级程序设计》笔记三

    第三章 基本概念 任何语言的核心必然会描述这门语言最基本的工作原理.这部分内容对我们来说,读起来很乏味,甚至会产生困意,但这部分内容却是重要的!我有幸拜读<JavaScript高级程序设计> ...

  2. javascript高级程序设计读书笔记-事件(一)

    读书笔记,写的很乱   事件处理程序   事件处理程序分为三种: 1.html事件2. DOM0级,3,DOM2级别  没有DOM1 同样的事件 DOM0会顶掉html事件   因为他们都是属性  而 ...

  3. Javascript高级程序设计读书笔记(第三章)

    第3章 基本概念 3.4 数据类型 5种简单数据类型:undefined.boolean.number.null.string. typeof操作符,能返回下列某个字符串:“undefined”.“b ...

  4. 《JavaScript高级程序设计》笔记:基本概念(三)

    数据类型 ECMAScript中有5种简单数据类型(也称为基本数据类型):undefined,null,boolean,number和string. typeof typeof null会返回“obj ...

  5. javascript高级程序设计读书笔记

    第2章  在html中使用javascript 一般都会把js引用文件放在</body>前面,而不是放在<head>里, 目的是最后读取js文件以提高网页载入速度. 引用js文 ...

  6. JavaScript高级程序设计 读书笔记

    第一章 JavaScript 简介 第二章 Html中使用JavaScript 第三章 基本概念 第四章 变量,作用域,内存 第五章 引用类型 第六章 面向对象 第七章 函数表达式 第八章 BOM 第 ...

  7. JavaScript高级程序设计-读书笔记(6)

    第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l        简单值:使用与JavaScript相同的语法,可以在JS ...

  8. JavaScript高级程序设计-读书笔记(1)

    第1章 JavaScript简介 JavaScript是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成: l        ECMAScript:提供核心语言功能: l        文 ...

  9. javascript高级程序设计 读书笔记1

    第二章  在HTML中使用JS 加载JS有三种:行内,head头部和外部链接JS   最好使用外部链接<script src="example.js" ></sc ...

  10. Javascript高级程序设计读书笔记(第六章)

    第6章  面向对象的程序设计 6.2 创建对象 创建某个类的实例,必须使用new操作符调用构造函数会经历以下四个步骤: 创建一个新对象: 将构造函数的作用域赋给新对象: 执行构造函数中的代码: 返回新 ...

随机推荐

  1. mpvue 小程序 使用wx.request请求数据

    1.创建src下创建utils/wx-request.js const host = 'http://10.0.0.6:8081' function request (url, method, dat ...

  2. drf框架,restful接口规范,源码分析

    复习 """ 1.vue如果控制html 在html中设置挂载点.导入vue.js环境.创建Vue对象与挂载点绑定 2.vue是渐进式js框架 3.vue指令 {{ }} ...

  3. vue环境搭建及单页面标签切换实例

    复习 """ 1.指令: v-once: <p v-once>{{ msg }}</p> v-cloak: 防止页面加载抖动 v-show:绑定的 ...

  4. Codeforces 1315A Dead Pixel (水题)

    Screen resolution of Polycarp's monitor is a×ba×b pixels. Unfortunately, there is one dead pixel at ...

  5. JAXB "有两个名为 "**" 的属性,类的两个属性具有相同名称 "**""解决方案

    这里说的名称冲突指的是: JavaBean 属性名称与字段名称之间的名称冲突.在pojo类中的setter和getter方法会导致运行报错:Exception in thread "main ...

  6. mac登录窗口出现白框问题解决

    昨天早上起床打开电脑,发现登录窗口的界面出现了大半边的白框,如下图,可是昨晚上关机前还是好好的,而且新电脑不至于啥也没干屏幕就出问题. 输入密码进入桌面,OK,不是屏幕的问题,那为什么会出现白框呢? ...

  7. Github Pull Request的提出与采纳

    这一文来简要介绍一下Github Pull Request(以下简称PR)的使用方法: 作为PR的提出者,如何对某个仓库提交PR,如何根据仓库管理者对所提交PR的反馈对PR进行完善 作为PR的接收者, ...

  8. java篇 之 集合

    集合   链接:https://blog.csdn.net/weixin_42504145/article/details/83119088 数组: java的数组既可以存储基本数据类型,也可以存储引 ...

  9. Linux - Shell后台、前台,运行命令

    后台运行(终端能操纵) 只需要在后面加& gedit & 查看正在运行的jobs jobs 放到前台运行(终端不能操作) fg % fg %1 一个终端一个context.一个终端就是 ...

  10. 测试环境docker-swarm安装部署

    测试环境swarm安装部署 部署前增加监听docker2375端口 centos 增加tcp监听端口 修改/lib/systemd/system/docker.service sed -i ‘s/Ex ...