一、整数
JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值表示。
转换:
- parseInt(..) 将某值转换成数字,不成功则NaN
- parseFloat(..) 将某值转换成浮点数,不成功则NaN
特殊值:
- NaN,非数字。可使用 isNaN(num) 来判断。
- Infinity,无穷大。可使用 isFinite(num) 来判断。
<script> num1 = 123; // 定义一个数字 num2 = new Number(456); // 创建数字对象 num3 = new Number(789); console.log(num1,num2,num3.valueOf()); // 输出123 Number { 456 } 789 a = '888'; console.log(typeof a); // 输出string num4 = parseInt(a); // 将字符串转换成数字 console.log(num4); // 输出888 b = 'a123'; num5 = parseInt(b); // 无法转换则返回NaN console.log(num5); // 输出NaN if(isNaN(num5)){ console.log('b无法转换成数字,所以返回NaN'); } else{ cosole.log('b能转换成数字'); } console.log(isFinite(num1)); // 判断是否为有限值,输出true console.log(typeof num1); // 输出什么类型,输出number num6 = 12.888888; console.log(num6.toFixed(2)); // 保留小数位,输出12.89 console.log(num6.toExponential(3)); // 12.89e+1 </script>
二、字符串
1、创建字符串的两中类型
// String对象用于处理文本字符串 // 创建值类型字符串变量 var name="pyrene"; var gender="男"; var priceString=String(12); // 创建应用类型字符串变量 var carType=new String("BMW5");
只有new出来的String才是应用类型
2、转义字符
1、 软回车: 在Windows 中表示换行且回到下一行的最开始位置。相当于Mac OS 里的 的效果。 在Linux、unix 中只表示换行,但不会回到下一行的开始位置。 2、 软空格: 在Linux、unix 中表示返回到当行的最开始位置。 在Mac OS 中表示换行且返回到下一行的最开始位置,相当于Windows 里的 的效果。 3、 跳格(移至下一列)。 它们在双引号或定界符表示的字符串中有效,在单引号表示的字符串中无效。 一般一起用,用来表示键盘上的回车键,也可只用 。 表示键盘上的“TAB”键。
三、字符串的编排方式及类型
1 栈内存:小而快,保存值类型,(几十K) 2 堆内存:大而慢,引用类型,栈中只有内存的编号,要通过此编号到堆中查找真正的数据 3 值内存 分配到栈内存里 4 new只能分配堆(heep)内存 5 引用类型的数据永远比值内存访问速度慢,,引用类型引用的是这个值的内存地址,而不是数据,但是值内存是数据 6 7 数据小用栈内存 值类型 8 大数据要用到 引用类型
注意:字符串里面的内容永远是不可变的。所以String对象的方法都不能改变原始字符串的内容
格式编排方式
四、字符串的方法
注意字符串的内容都是“不可变的”
方法如下:
s.strke() s.big() s.small() s.sub() s.sup() s.fontcolor(color) s.fontsize(size) s.link(url) s.toLowerCase() 把字符串转换成小写(注意源字符串内容不可变) s.toUpperCase() 把字符串转换成大写 s.charAt(index) 获取指定位置下标字符 s.charCodeAt(index) 获取指定位置下标字符的unicode码 s.indexOf(substring) 返回第一次索引出现指定字符串的下表 s.lastIndexOf(substring) 返回最后一次出现指定字符串的下标 s.slice(str,[end]) 返回从start到ed-1范围内的字串;如果省略end则直接获取到字符串结尾 s.substring(start,[end])返回从start到end-1范围内的字串;如果省略end则直接获取到字符串结尾
s.split(separator,[count])使用指定分隔符对字符串进行拆分 和s.joun()相反的操作
s.concat(str1,str2..)用于拼接两个或者多个字符串,另外还可以使用+做字符串拼接
s.match(value/regexp)方法可以在字符串内检索指定的值,或者找到一个或者多个与正则表达式匹配的字串
,这个方法类似于indexOf()和lastIndexOf(),但是它返回的是指定的值,而不是字符串的位置
s.search(regexp)方法用于检索字符串中指定的字符串,或者检索与正则表达式相匹配的子字符串
返回第一个regexp相匹配的起始位置;如果没有找到任何匹配的字串,则返回-1
s.replace(regexp, replacement) 替换,正则中有g则替换所有,否则只替换第一个匹配项,
$数字:匹配的第n个组内容;
$&:当前匹配的内容;
$`:位于匹配子串左侧的文本;
$':位于匹配子串右侧的文本
$$:直接量$符号
例子
var msg="Hello"; var lowerMsg=msg.toLowerCase(); var upperMsg=msg.toUpperCase(); console.log(msg); //Hello console.log(lowerMsg); //hello console.log(upperMsg); //HELLO var msg1="hellO你好ll"; console.log(msg1.charAt(0)); //h console.log(msg1.charAt(5)); //你 console.log(msg1.charCodeAt(0)); //104 console.log(msg1.charCodeAt(1)); //101 console.log(msg1.charCodeAt(2)); //108 console.log(msg1.charCodeAt(3)); //108 console.log(msg1.indexOf("ll")); //2 console.log(msg1.lastIndexOf("ll")); //7 console.log(msg1.slice(0,3));//hel console.log(msg1.slice(2));//llO你好ll console.log(msg1.substring(2));//llO你好ll console.log(msg1.substring(1,3));
var data="aa||bb||cc";
var arr1=data.split("||");
for(var i=0;i<arr1.length;i++){
console.log(i+ ":" +arr1[i]);
}
// 0:aa 1:bb 2:cc
var data2="||aa||bb||cc||";
var arr2=data2.split("||");
for(var i=0;i<arr2.length;i++){
console.log(i+":"+arr2[i])
}
// 0: 1:aa 2:bb 3:cc 4
var s1="aa";
var s2=s1.concat("bb","cc");
console.log(s1); //aa
console.log(s2); //aabbcc
var s3=s2+"dd"+66;
console.log(s3); //aabbccdd66
问题:下面程序中一共创建了多少个字符串
var s4="aa";
var s5=s4+"bb"+"cc"+66;
console.log(s4)
由于字符串是不能改变的, 所以下面创建了s4一个 bb第二个 cc 第三个 s4+bb 第四个 s4+bb+cc 第五个 s5 第六个