javascript高级程序设计学习历程
第三章 基本概念
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高级程序设计学习历程的更多相关文章
- JavaScript高级程序设计---学习笔记(一)
今天,2017.3.17开始利用课余时间仔细学习<JavaScript高级程序设计>,将需要掌握的知识点记录下来,争取把书里的所有代码敲一遍并掌握. 1.标识符命名最好是第一个字母小写,剩 ...
- JavaScript高级程序设计学习(四)之引用类型
在javascript中也是有引用类型的,java同样如此. javascript常见也比较常用的引用类型就熟Object和Array. 一个对象和一个数组,这个在前后端分离开发中也用的最多.比如aj ...
- JavaScript高级程序设计学习(三)之变量、作用域和内存问题
这次讲的主要是变量,作用域和内存问题. 任何一门编程语言,都涉及这三个. 变量,比如全局变量,局部变量等,作用域,也分全局作用域和方法作用域,内存问题,在java中就涉及到一个垃圾回收的问题,由于ja ...
- javascript高级程序设计学习笔记
javascript高级程序设计,当枕头书已经好久了~zz 现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...
- JavaScript高级程序设计学习(四)之引用类型(续)
一.Date类型 其实引用类型和相关的操作方法,远远不止昨天的所说的那些,还有一部分今天继续补充. 在java中日期Date,它所属的包有sql包,也有util包.我个人比较喜欢用util包的.理由, ...
- javascript 高级程序设计 学习笔记
<!--<script> // 异步请求封装 IE6即以上浏览器 // ajax(url,fnSucc,selectID,fnFaild) //url 请求地址 //fnSucc 异 ...
- JavaScript高级程序设计---学习笔记(二)
面向对象程序设计1.属性类型.定义多属性.读取属性特性对象的属性在创建时都带有一些特征值,JavaScript通过这些特征值来定义它们的行为.这些特性是为了实现JavaScript引擎用的,因此不能直 ...
- JavaScript高级程序设计学习(一)之介绍
作为一名web开发人员,日常用的最多的就是js,也就是大名鼎鼎的ECMAScript,又称javascript.再次声明js与java除了语法上相似,没有半毛钱关系.据说之所以叫javascript, ...
- JavaScript高级程序设计学习笔记--面向对象的程序设计(二)-- 继承
相关文章: 面向对象的程序设计(一) — 创建对象 http://www.cnblogs.com/blackwood/archive/2013/04/24/3039523.html 继承 继承是OO语 ...
随机推荐
- K8s集群中设置harbor仓库认证
一,获取harbor的登陆用户名和密码(demo_user/demo_pwd) 二,使用kubectl命令生成secret(不同的namespace要分别生成secret,不共用) kubectl c ...
- vs解决方案文件出错
问题描述: 电脑死机,重启电脑后打开解决方案,提示“选择的文件不是有效的解决方案文件” 解决方案: 1. 先用记事本打开这个解决方案查看下,发现其中内容变成空白了? 2. 打开项目中的xxxx.vcx ...
- day30_8.9 操作系统与并发编程
一.操作系统相关 1.手工操作 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念. 这时候的计算机是由人为将穿孔的纸带装入输入机,控制台获取 ...
- Vue-cli 中安装并使用less
首先安装vue-cli,网站教程多多,在这不多说.接下来在vue项目目录下,运行 其他扩展使用方法我放个官网链接,大家可以点击查看 npm install less less-loader --sav ...
- python27期day11:f-strings格式化、迭代器、生成器、作业题。
1.建议小写f: name = "宝元"age = 18sex = "男"msg = F"姓名:{name},性别:{age},年龄:{sex}&qu ...
- TortoiseSVN客户端(七)
TortoiseSVN 是一个 Windows 下的版本控制系统 Apache™ Subversion®的客户端工具. 一.安装 官网下载地址:https://tortoisesvn.net/down ...
- 不使用xftp上传/下载文件到linux
yum install lrzsz # 安装软件 window端上传到linux端: 1. window端先压缩需上传的文件 2. linux端运行命令rz 3. 在弹出的窗口选择压缩好的文件, ...
- JavaWeb 笔记
WEB-INF 目录 web.xml 文件配置 精准匹配 "/" "/index" "/go/index.html" 路径通配匹配 &quo ...
- QLayout及其子类 清除添加的widget
起初,我的思路是,先取得Layout的items数量, 然后通过索引来移除每一个items,代码如下: QHBoxLayout * hly = new QHBoxLayout; ; i < ; ...
- mtd-utils编译安装过程
git clone git://git.infradead.org/mtd-utils.git cd mtd-utils apt install -y libssl-dev libzlb libzst ...