javascript中相同的变量可以保存不同类型的数据,它是松散类型或动态类型,上下文环境将决定变量的数据类型。
变量命名限制:ECMAScript关键字和浏览器对象模型(BOM)中的内置关键字不可以被用作变量名。
Javascript有3种基本数据类型:字符串,数字以及布尔型;此外,Javascript提供了一些内建对象:String,Number和Boolean。基本数据类型是基本值的类型,而内建对象拥有内建属性和方法,内建对象会封装各自的基本类型并调用内建属性和方法。
Javascript是松散类型的语言,字符串变量或者数字类型、布尔型便来能在声明时没有差别;字符串变量声明时把文本赋给String型变量,并且对便来能进行初始化之后才定义了变量的上下文。
字符串文本是由单引号或双引号所引用的一系列字符;使用单双引号引用并未规定,只需要前后配对即可;若字符串中需要包含单引号或者双引号,在使用另一种引号进行引用即可,或者使用转义。
字符串中除可以放入普通字符外,换可以放入转义字符。转义符是通过特定方式将一些特殊字符放在字符串中的模式;除此之外,还可把Unicode字符放在字符串中。
\n \\ \” \u7231
EncodeURI和encodeURIComponent方法可以将字符串从ASCII码或非ASCII码字符转换为URIencoding的字符;这两个函数也都有对应的解码方法decodeURI和decodeURIComponet。
数字、布尔值等其他数据类型都可以转换为字符串,脚本引擎会根据上下文自动完成转换。
布尔值可以显式(使用Boolean函数将其他数据类型的值转换为布尔值)地赋给不同类型的变量;双重否定操作符可以用来显式地将数组或字符串转换为布尔值:
varsomeValue = 0;
varsomeBool = Boolean(someValue);
varstrValue = “1”;
varnumValue = 90;
var boolValue =!!strValue;
boolValue =!!numValue;
toBoolean转换表请关注,其他类型转换为布尔值的转换规则。
Javascript中,Number数据类型时浮点数,可以包含小数部分,也可以没有小数部分;若没有小数部分,则将被当做十进制整数;若包含小数部分,可以使用指数形式表示。
两个特殊的数字:正无穷大(Infinity)和负无穷大(-Infinity);数字类型上溢返回正无穷大,下溢返回负无穷大。
除十进制外,换可以使用八进制和十六进制来表示数字;如果使用String函数将八进制或十六进制数字转换为字符串,则脚本引擎首先会将数字转换为十进制,然后再将结果转换为字符串。
两个函数:parseInt(); 无论字符串是一个整数,还是浮点数,只返回数字的整数部分;从字符串中识别数字部分,直到遇到第一个非数字为止,如:”1.23e-2”,解析的结果是:1; 如果第一个字母不是数字,则直接返回NaN;此外,此函数第二个参数是要转换的数制,所以使用此函数可以实现数字各个数制之间的转换。
parseFloat(); 从字符串第一个数字开始识别数字部分,直到遇到第一个非数字为止,返回十进制表示的浮点型数值;如果第一个字母不是数字,则直接返回NaN
除将字符串转换为Number外,Number函数也可以用来将其他数据类型转换为数字,包含浮点型的字符串将返回浮点数,包含整数的字符串将返回整数。还可以使用IsFinite函数判断变量的数值是否是无穷大,若是无穷大或者NaN,返回false,否则返回true。
具体转换关系见转换表。
null变量是已定义的、值为null的变量:var nullString = null;
如果便来能已经声明但是没有初始化,那么就是undefined变量: var updefString;
如果声明了变量且赋予了初始值,则该变量就不是null或者undefined:var sValue = “”;
可以使用条件语句判断变量值。
可以使用isNaN()函数判断一个变量是否是NaN;
总结:0,null,NaN以及空字符串都是false,其他都是true.
常量是已命名数值,但不是变量;不可以重新赋值,声明时就必须完成初始化,一般声明为全局变量,名称为全大写。
const CURRENT_MONTH = 3.5;
var a,b=2;// b 是undefined
+ - * / % 所有的二元操作符都可以用于字符串,但是字符串必须可以正确转换为数字;在进行计算前会先将字符串转换为数字
如果运用于字符串:加法符号对字符串执行连接操作;如果将字符串和数字进行加法操作,也是执行连接操作。
++ -- -(负数)
位操作符将操作数当做32位的二进制数,然后按位操作:& | ^ ~
If else
Switch
==:比较变量值是否相等;会自动转换变量的数据类型为数字,然后再做比较。Switch语句中隐式地使用了此操作符用于判断“相等”。对应的:!=
===:用来判断变量的数值和类型,它只有在操作数的数值相同切类型相同的情况下才返回true。对应的:!==
.
While/dowhile/for
Javascript基本对象:第一种:与数据类型平行的封装对象;
第二种:Math、Date、RegExp
第三种:Array
对于基本类型,在创建时若不使用new关键字,则只是创建基本类型;如果使用了new关键字,则创建了封装对象实例。
Var strName =“majq”; //创建基本类型
Var strName2 =String(“majq”); //创建基本类型
Var strName3 =new String(“majq”);//创建封装对象类型
创建基本类型后也可以直接使用封装对象的属性和方法,其实质是引擎会自动创建一个临时对象以供使用,在使用完毕之后会自动销毁此临时对象。
Boolean对象没有自己的属性,只有继承自Object的属性;Boolean对象实例有不同的方法,取决于初始值是false还是true,如果未对Boolean对象进行初始化,则默认初始值为false;
可以使用默认初始化、0/1、true/false,””/非空字符串对boolean对象进行初始化,值同数据类型转换规则。
Boolean对象只有两个继承方法:toString(),valueOf();
MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY
正负无穷大用来判断溢出;而最大最小可表示数可用来获取可表示最大最小值。
ToExponential 以字符串形式返回数值的指数格式
ToFixed 以字符串形式返回数值的固定位数格式
toPrecision 以字符串形式返回数值的特定精确格式
valueOf/toStringtoString方法可以传入数制参数,进行数制转换后输出
toLocaleString返回与环境相关的数值格式
length
valueOf
charAt
charCodeAt
concat 连接字符串
split 分割字符串
slice 返回字符串的某个片段
substring,substr 返回子字符串
match,replace,search 正则表达式匹配,替换和查找
toLowercase,toUpperCase 大小写转换
var searchPattern = new RegExp(‘s+’); //显式创建正则表达式
var searchPattern = /s+/; //文字量方式创建正则表达式
实例方法
Test 测试正则表达式与文本是否匹配
Exec 返回一个数组
var newArray = new Array(‘1’,’2’);
var newArray = [‘1’,’2’];
在创建数组对象时,引擎会立即将基本数据类型转换为Array对象,并将结果赋给变量。
可以根据固定元素个数创建数组,也可以不提供元素个数任意添加元素。
length
方法
Splice 在数组总插入或删除元素
Slice 分割数组 不改变原来的数组,返回新数组
Concat 连接不同的数组 不改变原来的数组,返回新数组
Join 使用指定的分割符生成字符串
Reverse 对数组执行倒序排列
Array对象有4个用于维护队列和列表的方法:
push:在最后一个元素后面加入元素,返回数组新的长度
unshift 在第一个元素前面加入元素,返回数组新的长度
pop:从数组最末尾移除一个元素,返回被移除的元素
shift:从数组头部移除一个元素,返回被移除的元素
所以:
加入在队尾(push),移除在队首(shift)
加入在队首,移除在队尾
加入在队尾,移除在队尾
加入在队首,移除在队首
Javascript中,可以将函数赋给一个变量或数组元素,也可以将其作为一个参数传给一个函数调用。Javascript中函数有三种创建方法:声明式的/静态的、动态的/匿名的、字面量式的。
参数中的基本类型变量传给函数的实际上是原始值,如一个字符串、一个布尔值、一个数字等;这也就意味着在函数中修改实际参数值,不会影响调用程序。
对于传给函数的对象而言,传递的则是一个指向原始对象的引用,在函数中对这个对象的修改将会反映在调用程序中。