第三章 基本概念

3.1 语法

3.1.1 区分大小写

ECMAScript中的一切(变量,函数,操作符)都区分大小写的

3.1.2 标识符

标识符:变量,函数,属性的名字以及函数的参数。
标识符的命名规则(驼峰法):
1>标识符由字母,数字,下划线()或美元符号($)组成;
2>标识符的第一个字符串必须是字母,下划线(
),美元符号($);
3>第一个字母小写,剩下的买个单词的首字母都要大写。

注意:关键字,保留字,true,false和null不能用作标识符

3.1.3 注释

主要有两种注释:
1> 单行注释: // 这是单行注释
2> 多行注释(块级注释):
/* * 这是多行注释 * 块级注释 */

## 3.2 关键字和保留字

关键字: 一组具有特定用途名词,关键字可以用来表示控制语句的开始或结束,或者用于执行特定的操作;
保留字:当前没有任何特定的用途,将来可能会被用作关键字的一组名词

3.3 变量

js中的变量是松散类型的,可以用来保存任何类型的数据,var声明的变量是局部变量。

function test(){
            var message = '函数内的变量';
            console.log(message);
        }
        test() // 函数内的变量
        console.log(message); // Uncaught ReferenceError: message is not defined

上述代码中在函数外部调用函数内部的变量message时报错,原因是函数内部定义的变量message作用域是函数体内,这个变量会在函数调用是创建,调用结束后就会立即销毁。从而使的在函数外部调用报错:
message is not defined

3.4数据类型

五种基本数据类型:Undefined,Null,Boolean,Number,String;
一种复杂数据类型:Object

3.4.1 typeof操作符

用来检查数据类型,typeof的检查对象可以是变量,也可以使字面量

 function test(){
            var message = '函数内的变量';
            console.log(message);
        }
 var message = 'helloWorld'
 console.log(typeof message)     // string
 console.log(typeof 4)           // number
 console.log(typeof test)        //function
 console.log(typeof null)        //object
 console.log(typeof undefined)   //undefined
 console.log(typeof true)        //boolean

3.4.2 Undefined类型

声明变量,但是没有对其进行初始化,这个变量的值就是undefined。
引入这个值是为了区分空对象指针与未经初始化的变量.
建议:声明变量时对其进行初始化。

var message;
alert(message === undefined)

3.4.3 Null 类型

null表示空对象的指针,这就是为啥用typeof检查null的时候返回的是object

var message = null;
console.log(typeof message)

建议:如果定义一个变量是用来保存对象的,那么初始化的时候可以将其值设定为null

3.4.4 Boolean类型

boolean是使用最多的一种类型,该类型只有两字面值:true,false.

注意:字面值true和false是区分大小写的!!!!!

虽然boolean只有俩字面值,但是js中的所有的类型值都可以转换为与boolean值等价的值。可以调用方法Boolean().

var message;
alert(Boolean(message))  // true

3.4.5 Number类型

Number类型的数据主要有两种:整数和浮点数(小数)。
常用的十进制数表示,同时也有八进制,十六进制表示。八进制表示法以0开始,后面的数字必须小于8,否则会识别为十进制数。十六进制的以0x开始.

    var num_1 = 9;
    var num_2 = 070;
    var num_3 =08;
    var num_4 = 0x1a;
    console.log(num_1);  // 9
    console.log(num_2);  // 56 (有效的八进制数)
    console.log(num_3);  // 8 (无效的八进制数,按十进制输出)
    console.log(num_4);  // 26(有效的十六进制数)
    console.log(num_2+num_4);  // 82 (转换成十进制进行计算的)

注意:无论是八进制数还是十六进制数,在进行算术计算的时候都会转换成十进制数数值

3.4.5.1 浮点数值

浮点数必须包含一个小数点,小数点后面必须要有数字。
因为浮点数需要的内存空间是整数的两倍,所以es会及时的将浮点数转换为整数保存。

var num_1 = 1. // 小数点后面没有数字,被转换为整数1进行保存
var num_2 = 10.0 // 10.0本身就是一个整数,也会按整数10进行保存

浮点数的最高精度是17位小数,但是在进行算数运算的时候精度没有整数的高。(浮点数进行数值运算的时候会产生舍入误差)

alert(0.2+0.1); // 0.30000000000000004

JS的浮点数是遵循IEEE 754标准,采用双精度存储(double precision),使用64位固定长度来表示,其中1位用来表示符号位,11位用来表示指数,52位表示尾数.十进制的0.1和0.2会转换成二进制的,但是由于浮点数用二进制表示是无穷的,而IEEE754标准的64位双精度浮点数的小数部分最多支持53位二进制,多余的二进制数字被截断,所以两者相加之后的二进制之和的长度超过了52位,截取能识别的52位二进制数在转换为十进制后就会出现误差问题

3.4.5.2 数值范围

ECMAScript能够表示的最大值和最小值是保存在Number.MAX_VALUE和Number.MIN_VALUE中的。要想判断是不是无穷大或者无穷小的话 可以使用isFinite()方法判断。只要数值位于最小值和最大值之间就会返回true

    alert(Number.MAX_VALUE); //1.7976931348623157e+308
    alert(Number.MIN_VALUE); //5e-324

3.4.5.3 NaN

NaN(非数值)是一个特殊的数值。任何数除以非数值都会返回NaN.
NaN有两非常特殊的特点:
1>任何有关NaN的操作都会返回NaN;
2>NaN与任何数值都不想等,包括NaN本身。
isNaN()方法:用来判断传入的参数是不是数值,如果是(包括可以转换为数值)返回false,反之返回true。isNaN()会调用对象的valueOf()和toString(),如果可以被转换成数字则返回false

    alert(isNaN(NaN))   //true
    alert(isNaN('blue'))//true
    alert(isNaN([1,2])) //true(数组元素超过两个就是true)
    alert(isNaN(10))    //false
    alert(isNaN('10'))  //false
    alert(isNaN(true))  //false
    alert(isNaN([]))    //false
    alert(isNaN([1]))   //false
    alert(isNaN([1, 2]))   //true

3.4.5.4 数值转换

有三个方法可以把非数值转换为数值:Number(),parseInt(),parseFloat()。
Number():可以用于任何数据类型,parseInt()和parseFloat()只用与将字符串转化为数值。

3.4.6 String类型

String类型是表示由领个或者多个字符组成的字符序列,叫做字符串。
字符串的特点:字符串一旦创建,值就不可改变,要改变某个变量中保存的字符串,首先就要先销毁,然后在用新的字符串去填充这个变量。
其他的值转换为字符串的话有两种方式:
1> toString()方法
该方法在转换数值的时候默认的是十进制,即无参数时。同样的本方法可以传递数值转换字符串是使用的进制数(2,8,16进制)
该方法不能转换null,undefined
2> String()方法可以转换任何类型的
转化规则:
如果值有toString()方法则调用这个方法转换;
如果是null则转换为‘null'
如果是undefined则转换为’undefined’

3.4.7 Object类型

javascript高级程序设计学习历程的更多相关文章

  1. JavaScript高级程序设计---学习笔记(一)

    今天,2017.3.17开始利用课余时间仔细学习<JavaScript高级程序设计>,将需要掌握的知识点记录下来,争取把书里的所有代码敲一遍并掌握. 1.标识符命名最好是第一个字母小写,剩 ...

  2. JavaScript高级程序设计学习(四)之引用类型

    在javascript中也是有引用类型的,java同样如此. javascript常见也比较常用的引用类型就熟Object和Array. 一个对象和一个数组,这个在前后端分离开发中也用的最多.比如aj ...

  3. JavaScript高级程序设计学习(三)之变量、作用域和内存问题

    这次讲的主要是变量,作用域和内存问题. 任何一门编程语言,都涉及这三个. 变量,比如全局变量,局部变量等,作用域,也分全局作用域和方法作用域,内存问题,在java中就涉及到一个垃圾回收的问题,由于ja ...

  4. javascript高级程序设计学习笔记

    javascript高级程序设计,当枕头书已经好久了~zz  现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...

  5. JavaScript高级程序设计学习(四)之引用类型(续)

    一.Date类型 其实引用类型和相关的操作方法,远远不止昨天的所说的那些,还有一部分今天继续补充. 在java中日期Date,它所属的包有sql包,也有util包.我个人比较喜欢用util包的.理由, ...

  6. javascript 高级程序设计 学习笔记

    <!--<script> // 异步请求封装 IE6即以上浏览器 // ajax(url,fnSucc,selectID,fnFaild) //url 请求地址 //fnSucc 异 ...

  7. JavaScript高级程序设计---学习笔记(二)

    面向对象程序设计1.属性类型.定义多属性.读取属性特性对象的属性在创建时都带有一些特征值,JavaScript通过这些特征值来定义它们的行为.这些特性是为了实现JavaScript引擎用的,因此不能直 ...

  8. JavaScript高级程序设计学习(一)之介绍

    作为一名web开发人员,日常用的最多的就是js,也就是大名鼎鼎的ECMAScript,又称javascript.再次声明js与java除了语法上相似,没有半毛钱关系.据说之所以叫javascript, ...

  9. JavaScript高级程序设计学习笔记--面向对象的程序设计(二)-- 继承

    相关文章: 面向对象的程序设计(一) — 创建对象 http://www.cnblogs.com/blackwood/archive/2013/04/24/3039523.html 继承 继承是OO语 ...

随机推荐

  1. 201871010126 王亚涛 《面向对象程序设计(Java)》第十周实验总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  2. 面向对象程序设计(Java) 第4周学习指导及要求

    2019面向对象程序设计(Java)第4周学习指导及要求(2019.9.17-2019.9. 23)  学习目标 掌握类与对象的基础概念,理解类与对象的关系: 掌握对象与对象变量的关系: 掌握预定义类 ...

  3. zz 机器学习系统或者SysML&DL笔记

    机器学习系统或者SysML&DL笔记(一)  Oldpan  2019年5月12日  0条评论  971次阅读  1人点赞 在使用过TVM.TensorRT等优秀的机器学习编译优化系统以及Py ...

  4. wal2json java jdbc 试用

    上边有介绍过使用命令行模式的wal2json扩展使用,以下是一个jdbc 集成的试用(pg jdbc 驱动天然支持复制) 环境准备 pg(包含wal2json扩展)docker-compose 文件 ...

  5. tornado模板的使用

    一. 配置模板路径 settings中使用template_path来指定模板的路径, 实例化服务对象时加载进去即可. 二. 模板的使用 1. 使用self.render()方法可返回指定的html页 ...

  6. [ZJOI2019]线段树(线段树,DP)

    又是神仙题. 要写博客太长了,先咕着.放个代码先. 为什么 fmul 在 linux 底下还被定义过了--能想象到我一发 CE 的绝望吗 qaq #include<bits/stdc++.h&g ...

  7. Linux性能优化实战学习笔记:第二十八讲

    一.案例环境描述 1.环境准备 2CPU,4GB内存 预先安装docker sysstat工具 apt install docker.io sysstat nake git 案例总共由三个容器组成: ...

  8. Salesforce 版本控制 - VS Code + GitHub + Salesforce

    使用VS Code开发Salesforce有个很好的地方是可以联接GitHub进行代码版本控制,点击查看使用VS Code开发SalesForce 第一步:安装GIthub Desktop Githu ...

  9. 推荐一款运动步行App爱步行

    推荐一款运动步行App爱步行 1 介绍 爱步行,是一款倡导健步运动.绿色生活.提升散步乐趣的APP,让大众在享受运动的同时,让用户的每一步都能产生价值.爱步行以步数为基础,用户在每天的行走过程中,可以 ...

  10. Scala字符串插值 - StringContext

    翻译自:STRING INTERPOLATION 简介 自2.10.0版本开始,Scala提供了一种新的机制来根据数据生成字符串:字符串插值.字符串插值允许使用者将变量引用直接插入处理过的字面字符中. ...