第三章 基本概念

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. 论文笔记系列-AutoFPN

    原论文:Auto-FPN: Automatic Network Architecture Adaptation for Object Detection Beyond Classification 之前 ...

  2. 201871010134-周英杰《面向对象程序设计(java)》第十周学习总结

    import java.io.FileInputStream; import java.io.FileNotFoundException; public class ExceptionText1 { ...

  3. Vue.js如何获得兄弟元素,子元素,父元素(DOM操作)

    我不是代码的生产者,我只是知识的搬运工. 戳这

  4. VNC远程登陆树莓派3(包括开机启动)

    在树莓派上安装VNC需要使用命令行.如果需要远程操作安装VNC,就必须通过SSH登录到命令行界面(Raspbian的默认用户名是:pi,默认密码是:raspberry). 安装 命令行输入: sudo ...

  5. JAVA基础概念(一)

    一.JAVA标识符 标识符就是用于给 Java 程序中变量.类.方法等命名的符号.如图标黄部分: 使用标识符时,需要遵守几条规则: 1.  标识符可以由字母.数字.下划线(_).美元符($)组成,但不 ...

  6. [LeetCode] 875. Koko Eating Bananas 科科吃香蕉

    Koko loves to eat bananas.  There are N piles of bananas, the i-th pile has piles[i] bananas.  The g ...

  7. [LeetCode] 525. Contiguous Array 相连的数组

    Given a binary array, find the maximum length of a contiguous subarray with equal number of 0 and 1. ...

  8. JaCoCo覆盖率计数器

    覆盖率计数器 JaCoCo使用一组不同的计数器来计算覆盖率指标.所有这些计数器都是从Java类文件里获取信息,这些类文件包含Java 字节码指令和调试信息.即使没有可用源代码情况下,这种方法可以实时有 ...

  9. (转)yum只下载不安装软件包

    方法一:使用yum的downloadonly插件 步骤: (1) 先安装downloadonly插件  yum install yum-plugin-downloadonly (2)使用–downlo ...

  10. .NET Core:Token认证

    现在是WebAPI的时代,你所需要面对的不止是浏览器了,通常会使用Web, WebApp, NativeApp等多种呈现方式.其中诸如Ember,Angular,Backbone之类的前端框架类库正随 ...