JavaScript高程三----(基本一)

JavaScript高等程序设计(第3版)读书笔记

1.辨别大小写:

变量、函数名和操纵符都要辨别大小写。大小写的差别离别示意差别的变量。

2.标识符:

变量、函数、属性、函数参数的名字。

注重:

  1. 开首必需字母、下划线、一个美圆标记$
  2. 其他字符可所以字母、下划线、美圆标记、数字。
  3. 也可以包含扩大的ASCII或Unicode字母。(不引荐)

起名:采纳驼峰大小写花样:第一个字母小写,剩下的每一个有意义的单词的首字母大写

例子:firstSecond、myCar

3.解释:

  1. 单行谛视//
  2. 块级解释/ /

4.严厉形式:

为JS定义一种差别的剖析与实行模子。(对某些不安全的操纵抛出毛病)

**开启:在JS文件顶部增加'use strict';**    

也可以在函数内部的上方包含这条指导。

**支撑版本:IE10+、Firefox 4+、Safari 5.1+、Opera12+ 、谷歌**


5.语句:

每段代码都要以;末端。

注重:

  1. 假如省略了分号,由剖析器肯定语句的末端。
  2. 虽然可以省略,然则加上了这个分号可以防止许多毛病,也可以增长代码的机能,剖析器就不必推想那里插进去分号。

6.关键字和保留字:

关键字:言语保留的,不能用做标识符。

保留字:不能用做标识符的。

**注重:在严厉/非严厉形式下保留字会有少差别**


7.变量:

**js的变量是松懈范例的,就是可以用来保留任何范例的数据。**
  1. Var message = ‘hi’;
  2. var message = 18;

注重:

  1. 变量刚最先存储’hi’;然后被数字值100庖代。(这类是可以的,然则不引荐)
  2. 用var润饰的变量,将成为定义该变量的作用域中的部分变量。
function test(){
    var message = "hi";//部分
}
test();
alert(message);//毛病

假如省略了var,从而建立了全句变量(严厉形式下报错)

以上面的例子为例:

挪用了test(),这个变量就有定义,就可以在函数外的任何地方被挪用。


可以运用一条语句定义多个变量用逗号离开(可初始化,也可以不初始化):

var a,b,c;

Var a = 1,b=’11’,c=false;

8.数据范例(JS具有动态性):

1.**基本数据范例**:
  1. Undefined
  2. Null
  3. Boolean
  4. Number
  5. String

    2.庞杂数据范例:

    object。

实质:由一组无序的名值对构成的。

注重:js不支撑任何建立自定义范例的机制,而一切值终究都将是上述6种数据范例之一

3.typeof操纵符:

检测给定变量的数据范例:typeof

运用typeo操纵符可以返回以下状况:

  1. ‘undefined’:这个值未定义。
  2. ‘boolean’ :布尔值
  3. string : 字符串
  4. number : 数值
  5. object : 对象或null
  6. function : 函数
//typeof 可以数值或变量
var a = "some string";
alert(typeof a);
//typeof括号可以省略
alert(typeof (a));
alert(typeof 11);

注重:

  1. tupeof null 会返回 object. 特别值:null被认为是一个空的对象援用;
  2. Safari5 、谷歌7之前的版本,对正则表达式挪用typeof操纵符会返回”function”,而其他浏览器返回object.

注重:function也是个对象,不是一种数据范例,但是,函数也确切有一些特别的属性,经由历程typeof操纵辨别函数和其他对象是必要的

4.Undefined 范例:

Undefined 范例只需一个值,就是特别的undefined.

**在运用var声明,但未对其初始化时,这个变量的值就是underined**
var message;
alert (message == undefined); ture

//声清楚明了,但未对其举行初始化。
//显现
var message=undefined;
alret (message == undefined); ture

//不过,包含undefined的值的变量与还没有定义的变量照样不一样的。
var messgae;
//var age;
alert(message); //undefined
//运用alerg函数时还没有声明的变量age--会致使毛病。
alert(age); //报错

假如都把age变量解释掉了:
//var age,
var message;
alret(type messgae); undefined;
alret(type age);  undefined;

注重:即使未初始化变量会自动赋值undefinde,然则显现变量赋值是个明智的挑选

5.Null范例:

Null范例是第二个只需一个值的数据范例,特别的值是null.

null 代表着空对象指针.

typeof检测null,就会放回object



var car = null;
alert(typeof car); // object

注重:假如变量存储对象,请初始化null,而不是其他值。

只需直接检测null值就可以晓得响应的变量是不是已保留了一个对象的援用:

if(car != null){
    
}

实际上,undefined值,来自null值的。

它们举行推断就是ture.

注重:它们有着如许关联,然则用处不一样

  1. 只需意在保留对象的变量还没有真正保留对象,就保留null

6.Boolean 范例:

两个值:true和false

注重:

  1. ture不一定即是1
  2. false不一定即是0
  3. 辨别大小写
js一切范例的值都有与这两个不二值等价的值

要将值转换对应的布尔值,Boolean()函数

var a = "11";
var message = Boolean(a); ture

转换划定规矩:

ture:

  1. 任何非空字符串
  2. 非0数字值
  3. 任何对象
  4. n/a(不实用)

则反之

在掌握语句中,自动实行响应的转换划定规矩
var message = "11";
if(message){
    alert("ok");
}

7.Number范例:

整数和浮点数值

整数:

  1. 十进制:10
  2. 八进制: 第一名必需0,然后八进制数字序列1(0-7),假如字面值中数值超出局限,前导0被疏忽,背面看成十进制
  3. 八进制在严厉形式无效
  4. 十六进制,开首0x,背面随着十六进制数字(0-9以及A-F),字母可以大写也可以小写
  5. 算术盘算时,八进制和十六进制示意的数值都被转换十进制数值

注重:正零和负0被认为相称

浮点数:

  1. 包含小数点,小数点背面至少有一名数字。(小数点前面可以没有整数)
  2. 保留的浮点数值的内存空间时整数的两倍(所以小数点没有任何数字。自动转换整数来保留。假如是一个整数1.0,那末更会自动转换了)
  3. 关于极大或极小的值,可以用e来示意,示意浮点数值
  4. e示意:e前面的数值。乘以 10的指数次幂(即使是一个大写或小写的字母e)

    var floatNum = 3.125e7
    3.125 乘于十的七次方

5.e示意法,示意极小的数值

0.00000000000000003
3e-17
会把小数点六个0以上的浮点转换为e示意

6.浮点最高精度是17位小数。盘算其精度不如整数

0.1+0.2 组织不是0.3,而是0.300000000004

if(a+b == 0.3){
    alret("不要如许测试");
}

注重,永久不呀测试某个特定的浮点数值

7.1数值局限:
注重:因为内存的限定,ECMAScript并不能保留世界上一切的数值。

js中可以示意的最小数值和最大的数值保留在Number.

MIN_VALUE:这个值是5e-324;

MAX_VALUE:这个值是1.7976931348623157e+308

**注重:盘算的时刻凌驾js数值局限的值,那末数值自动转换infinity值**
  1. 数值是负数,-infinity(负无限)
  2. 数值是正数,infinity(正无限)

注重:只需盘算返回了正或负的infinnity值,将没法举行下一次的盘算

确认最大值与最小值之间,可以运用isFinite()函数,假如在局限内,返回true

接见:
Number.NEGATIVB_INFINITY 
Number.POSITUVE_INFINITY
获得 负 和 正 infinity
7.2 NaN:
即非数值,是一个特别的数值。

示意一个原本要返回数值的操纵数,未返回数值的状况。(不会抛出毛病)

**注重:任何数除于0会返回NaN,不会影响其他代码的实行**
  1. 任何触及NaN的操纵(NaN/10)都邑返回NaN,(多步盘算有可以致使题目)
  2. NaN与任何值都不相称,包含NaN自身。
alert(NaN == NaN) //false

为针对上面状况:

isNaN()函数。

参数可所以任何范例,函数会帮我们,肯定这个参数是不是 “**不是数值**”。

它会尝试把参数这个值,转换为**数值**。不是数值的值会直接转换为数值。

不能被转换的数值的值都邑致使这个函数返回true.



alert(isNaN(NaN)) ture
alert(isNaN(10)) false
alert(isNaN('10')) false
alert(isNaN('blue')) ture
alert(isNaN(ture)) false
  1. NaN自身,即非数值。
  2. 数值10和字符串10,能转换数值,返回了false
  3. blue不能转换数值
  4. true可以转换成数值1

Tips: isNaN也合适对象,在对象挪用函数时,起首会挪用对象的valueOF要领,然后肯定该要领返回的值是不是可以转换为数值。假如不能,基于这个返回值挪用tostring要领,再测试返回值

7.3.数值转换:
非数值转换为数值函数:Number()、parseInt()、parseFloat
  1. Number:用于任何数据范例
  2. 其他两个,把字符串转换成数值

注重:这三个函数关于一样的输入会有返回差别的效果

Number转换划定规矩:

  1. 布尔值,true和false,转换1和0
  2. 数字值,简朴的传入和返回
  3. null,返回0
  4. undefined,返回NaN
  5. 字符串:

    1. 只包含数字(包含正负号状况),则将其转换十进制。(注重前导0会被疏忽)
    2. 字符串是浮点,转换对应的浮点数值。(疏忽前导零);
    3. 字符串是十六进制花样,转换雷同大小的十进制整数
    4. 字符串是空,转换为0
    5. 除了以上的花样外的字符串,转换为NaN

6.假如对象,挪用对象的valueOf(),然后根据上述的划定规矩转换返回的值。假如效果是NaN,挪用对象的toString()要领。然后再根据上述划定规矩转换返回字符串值。

注重:该函数处置惩罚字符串毕竟庞杂,不够合理,因而处置惩罚整数的时刻更经常使用,parseInt()函数

parseint函数:

  1. 转换字符串时,看其是不是相符数值形式。
  2. 疏忽字符串前面的空格,直到找到第一个非空格字符串
  3. 假如第一个字符不是数字符串或着负号,返回NaN
  4. 用它转换空字符会返回NaN.
  5. 假如第一字符串是数字字符串,继承剖析下一个,直到剖析完一切或碰到非数字符串。比方:123blue,blue会被完整疏忽,转换123.
  6. 假如是浮点数,22.5,会转换22,小数点并非数字字符串。
  7. 假如字符串中的第一个字符是数字字符,辨认种种整数花样(二、十、十六进制)。假如以”0x”开首会转换十六个进制。以0开首而且背面随着数字,八进制来剖析。
var a = parseInt("123blue") 123
var b = parseInt("")    NaN
var c = parseInt("0xA");    10
var d = parseInt("22.5") 22
var e = parseInt("070") 56
var f = praseInt("70") 70
vae g = praseInt("0xf") 15

注重:js3和js5,转换八进制的时刻,有所差别,在js5中,前导0被认为无效,这个值当做0,严厉形式也是云云

解决办法:

可认为parseint函数,供应第二参数,转换运用的基数(若干进制)



parseInt("0xAF",16); 175
parseInt("AF",16);175
parseInt("AF") NaN

注重:基数决议怎样剖析输入的字符串,防止了毛病的剖析,所以运用的时刻,明白基数

parseFloat:

  1. 第一个字符串最先剖析每一个,直到末端或碰到无效的浮点数字字符为止。
  2. 字符串中第一个小数点有用,第二个无效,背面的字符串会被疏忽。22.34.5 转换22。34
  3. 它会疏忽前导0
  4. 十六进制花样字符串,一直转换0.。(只剖析十进制,没有第二参数指定参数的用法)
  5. 假如字符串包含的是一个可剖析为整数的数(没有小数点或着小数点后都是0),它会返回整数。
var a = parseFloat("123blue") 123

var b = parseFloat("OxA") 0

var c = parseFloat("22.5") 22.5
var d = parseFloat("22.34.5") 22.34
var e = parseFloat("0808.5")808.5
var f = parseFloat("3.125e7") 31250000

8.String范例:

示意由0个或多个16位Unicode字符构成的字符序列,字符串。

字符串由双引号或单引号示意。

**注重:双引号开首,必需以双引号末端,单引号也是云云**


8.1 转义字符:示意非打印字符或具有其他用处的字符。
\n 换行
\t 制表
\b 空格
\r 回车
\f 进纸
\\ 解释
\*  在字符串中运用,示意单个‘字符串
\"    在字符串中运用,示意单个"
\xnn    以16进制代码nn示意的字符nn必需0-F
\unnnn    以16进制代码nnnn示意一个Unicode字符,n必需为0-F


var test = "this is the letter sigma: \u03a3."
长度28
6个转义字符示意1个字符。
假如字符串中包含双字节字符,那末length属性可以不会精确地返回字符串中的字符数量。
8.2 字符串特性:
**注重:JS中的字符串是不可变的,也就是,字符串一旦建立,它们的值就不能转变,**

要转变某个变量保留的字符串,必需先烧毁本来的字符串,其次用另一个包含新值的字符串添补转变量



var lang = "Java";
lang = lang + "Script";

lang刚最先由java字符串构成。
第二行lang的值从新定义为"java与Script"组合:
1.建立能包容10个字符的新字符串
2.然后在这个字符串中添补javascropt
3.末了烧毁本来Java和字符串“Script"

这个历程在背景发作的,旧版本的浏览器中拼接字符串时速率很慢的缘由地点
8.3 转换字符串:
一个值转换为另一个字符串有两种体式格局:
  1. toString()要领:数值、布尔值、对象、字符串都有这个要领,这个要领返回字符串中的一个副本,然则null和undefined值没有这个要领。
  2. 平常不需要在这要领括号传参数,然则数值挪用的时刻,可以传,进制数(基数)。

    var age =11;
    var ageAsString = age.toString() 字符串11
    
    var a =10;
    alert(a.toString(2)); 1010
    注重:没有参数,默许基数10.
  3. 在不晓得要转换的值是不是是null或undefined,运用String(),能转换任何范例的值

String函数转换划定规矩:

  1. 假如值有tostring要领,则挪用该要领(没有参数)并返回响应的效果
  2. 假如值是null,则返回null
  3. 假如值是undefined,则返回undefined
var a = 10;
var b = true
var c = null;
var d;

string(a) 10
string(b) true
string(c) null
String(d); undefined

前两个个:跟挪用toString函数,获得效果雷同一样。
后两个,没有tostring要领,所以string函数就返回了这两个值的字面量。

9. Object 范例:

对象实在就是一组数据和功用的鸠合。

对象可以经由历程实行new操纵符跟要建立对象范例的称号来建立

自定义对象:建立Object范例的实例并为其增加属性和要领
var o = new Object();
跟Java建立对象差不多。


假如不给组织函数通报参数,可以省略背面那一对括号。
var 0 = new Object//有用不引荐

明白一个主要头脑:

Object 范例所具有的任何属性和要领一样存在于更详细的对象中。(Object根类)

Object的每一个实例具有以下属性和要领:

  1. Constructor:保留着用于建立当前对象的函数。 组织函数:就是Object().
  2. hasOwnProperty(propertyName):用于搜检给定的属性是不是在当前对象实例中(而不是在实例的原型中)。

    参数属性名:必需字符串情势指定 :o.hasOwnProperty(‘name’)

  3. isPrototypeof(Object):搜检传入的对象是不是是另一个对象的原型
  4. propertyIsEnumerable(propertyName):用于搜检给定的属性是不是可以运用for-in语句。必需与字符串情势指定。
  5. toLocaleString():返回对象以字符串示意,该字符串与实行环境的区域对应
  6. toString():返回对象以字符串示意
  7. valueof():返回对象以字符串、数值、布尔值示意。与toString要领返回值雷同。

注重:object是一切对象的基本,因而一切对象都具有这些基本的属性和要领

对象的行动不一定实用于JavaScript中的其他对象:

  1. 浏览器环境中的宿主对象:BOM、DOM
    原文作者:请叫我小白同学
    原文地址: https://segmentfault.com/a/1190000017765467
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞