《JavaScript权威笔记(第六版)》笔记0x0 词法、数据类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/funkstill/article/details/86600459

词法结构

    JavaScript区分大小写,HTML不区分大小写。

    直接量:程序中直接使用的数据值,如

12//数字
1.2//小数
"hello world"//字符串文本
true//布尔值

类型、值和变量

    数据类型:

        原始类型(primitive type):数字、字符串、布尔值、空(null)、未定义(undefined)

        对象类型(object type):对象是属性的集合,每个属性都由“名/值对”构成。

        特殊对象:

            数组:表示带有编号的值的有序集合,为数组定义额专用的语法,使数组拥有一些和普通对象不同的特有行为特性

            函数:具有与它相关联的可执行代码的对象,通过调用函数来运行可执行代码,并返回运算结果。有专用语法。对于JavaScript来讲,最重要的是,它们都是真值,并且JavaScript可以将他们当做普通对象来对待。

            构造函数:如果函数用来初始化(使用new运算符)一个新建的对象,我们会称之为构造函数。每一个构造函数定义了一类(class)对象——由构造函数初始化的对象组成的集合。

            类:可以看做对象类型的子类型,有数组(Array),函数(Function),日期(Date),正则(RegExp),错误(Error)

    数字

        JavaScript不区分整数值和浮点数值,均用浮点数表示。采用IEEE754标准定义64位浮点格式表示数字。。

        算数运算:

Math.pow(2,53)//=>9007199254740992:2的53次幂
Math.round(.6)//=>1.0:四舍五入
Math.ceil(.6)//=>1.0:向上求整
Math.floor(.6)//=>0.0:向下求整
Math.abs(-5)//=>5:求绝对值
Math.max(x,y,z)//返回最大值
Math.min(x,y,z)//返回最小值
Math.random()//生成一个大于等于0小于1.0的伪随机数
Math.PI//π:圆周率
Math.E//e:自然对数的底数
Math.sqrt(3)//3的平方根
Math.pow(3,1/3)//3的立方根
Math.sin(0)//三角函数:还有Math.cos,Math.atan等
Math.log(10)//10的自然对数
Math.log(100)/Math.LN10//以10为底100的对数
Math.log(512)/Math.LN2//以2为底512的对数
Math.exp(3)//e的三次幂

        日期和时间:

var then=new Date(2011,0,1);//2011年1月1日
var later=new Date(2011,0,1,17,10,30);//同一天,当地时间5:10:30pm,
var now=new Date();//当前日期和时间
var elapsed=now-then;//日期减法:计算时间间隔的毫秒数
later.getFullYear()//=>2011
later.getMonth()//=>0:从0开始计数的月份
later.getDate()//=>1:从1开始计数的天数
later.getDay()//=>5:得到星期几, 0代表星期日, 5代表星期一
later.getHours()//=>当地时间17:5pm
later.getUTCHours()//使用UTC表示小时的时间,基于时区

        JavaScript转义字符:

    \o     NUL字符        \u0000
    \b     退格符         \u0008
    \t     水平制表符     \u0009
    \n     换行符         \u000A
    \v     垂直制表符     \u000B
    \f     换页符         \u000C
    \r     回车符         \u000D
    \"     双引号         \u0022
    \'     撇号或单引号   \u0027
    \\     反斜线         \u005C
    \xXX   由两位十六进制指定的Latin-1字符
    \uXXXX 由四位十六进制指定的Unicode字符

     字符串

msg="Hello,"+"world";//生成字符串"Hello,world"
greeting="Welcome to my blog,"+""+name;

a="2"+3;//=>23

s.length;//获取字符串长度

var s="hello,world"//定义一个字符串
s.charAt(0)//=>"h":第一个字符
s.charAt(s.length-1)//=>"d":最后一个字符
s.substring(1,4)//=>"ell":第2~4个字符
s.slice(1,4)//=>"ell":同上
s.slice(-3)//=>"rld":最后三个字符
s.indexOf("l")//=>2:字符l首次出现的位置
s.lastIndexOf("l")//=>10:字符l最后一次出现的位置
s.indexOf("l",3)//=>3:在位置3及之后首次出现字符l的位置
s.split(",")//=>["hello","world"]分割成子串
s.replace("h","H")//=>"Hello,world":全文字符替换
s.toUpperCase()//=>"HELLO,WORLD"

s="hello,world";//在ECMAScript 5中,字符串可以当做只读数组
s[0]//=>"h"
s[s.length-1]//=>"d"

        模式匹配

    RegExp并不是JavaScript的基本类型。和Date一样,它只是一种具有实用API的特殊对象。尽管RegExp并不是语言中的基本数据类型,但是它们依然具有直接量写法,可以直接在JavaScript程序中使用。在两条斜线之间的文本构成了一个正则表达式直接量。第二条斜线之后也可以跟随一个或多个字母,用来修饰匹配模式的含义

/^HTML/                   //匹配以HTML开始的字符串
/[1-9][0-9]*/             //匹配一个非零数字,后面是任意个数字
/\bjavascript\b/i         //匹配单词"javascript",忽略大小写

var text="testing:1,2,3"; //文本示例
var pattern=/\d+/g        //匹配所有包含一个或多个数字的实例
pattern.test(text)        //=>true:匹配成功
text.search(pattern)      //=>9:首次匹配成功的位置
text.match(pattern)       //=>["1","2","3"]:所有匹配组成的数组
text.replace(pattern,"#");//=>"testing:#,#,#"
text.split(/\D+/);        //=>["","1","2","3"]:用非数字字符截取字符串

     布尔值

//任意JavaScript的值都可以转换为布尔值。下面这些值会被转换成false:
undefined
null
0
-0
NaN
""//空字符串

//所有其他值,包括所有对象(数组)都会转换成true

    null和undefined

    null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。对null执行typeof预算,结果返回字串"object",也就是说,可以将null认为是一个特殊的对象值,含义是“非对象”。但实际上,通常认为null是它自有类型的唯一一个成员,它可以表示数字、字符串和对象是“无值”的。
    JavaScript还有第二个值来表示值的空缺。用未定义的值表示更深层次的“空值”。它是变量的一种取值,表明变量没有初始化,如果要查询对象属性或数组元素的值时返回undefined则说明这个属性或元素不存在。如果函数没有返回任何值,则返回undefined。引用没有提供实参的函数形参的值也只会得到undefined。 undefined是预定义的全局变量(它和null不一样,它不是关键字),它的值就是“未定义”。
    尽管null和undefined是不同的,但它们都表示“值的空缺”,两者往往可以互换。判断相等运算符“==”认为两者是相等的(要使用严格相等运算符“===”来区分它们)。在希望值是布尔类型的地方它们的值都是假值,和false类似。 null和undefined都不包含任何属性和方法。实际上,使用“.”和“[]”来存取这两个值的成员或方法都会产生一个类型错误。

猜你喜欢

转载自blog.csdn.net/funkstill/article/details/86600459
今日推荐