JavaScript string 类型
字符串的特性;
- 由0个或多个16位unicode字符组成;
- 引号包裹,单引号和双引号都可以;但是单引号和双引号不能交叉使用;(放在引号内的任何东西都是属于字符串,即使里面没有东西或者是空格,都属于合法的字符串 )
var str1="2";
var str2='2';
var str3="";
var str4=" ";
var str5="function(){}";
//上面都是合法的string类型
console.log(typeof str1);
console.log(typeof str2);
console.log(typeof str3);
console.log(typeof str4);
console.log(typeof str5);
-
使用.length属性可以访问字符串的长度;
- length计算包括空格
//字符串长度 var strTest1="anbang";//共6个 var strTest2="安邦的JavaScript学习笔记";//共17 console.log(strTest1.length);//6 console.log(strTest2.length);//17 //这只是个简单的判断,如果想用JavaScript判断或者获取所占的字节,就不能这么判断了, //因为中文和英文字符所占的字节长度不同,所以要想获得中文字符的真正长度, //就需要对输入的字符进行判断或过滤(可以unicode区间进行判断),如果符合中文字符,则使用不同的标准。
-
无法精确返回双字节字符长度(上面已经做说明)
-
转义序列表示一个字符
-
字符串一旦被创建,其值是不能改变的,若要改变必须销毁原有字符串,然后用另一个包含新值的字符串填充改变量;
//字符串创建的原理;
var str1="12345";//把"12345"这个字符串赋值给str1这个变量;
str1="1234";//把"1234"这个字符串赋值给str1这个变量;
/*
* 并不是把"12345"修改为"1234"然后赋值给str1
*
* */
console.log(str1);//"1234"
console.log('1"23\'4\n56\'78');
// alert("1213123\naaaaaa")
转义序列
- \n 换行,常用的,这个需要记住;
\\
斜杠\是常用转义使用的- ' 单引号 常用
- " 双引号 常用
下面的仅作了解就可以了
- \t 制表符
- \b 空格
- \r 回车符
- \f 分页符
- \xnn 十六进制,n代表0-F
- \unnnn 以十六进制代码表示一个unicode字符
类型转换
-
toString()
-
把别的类型数据,转为字符串
适用类型 Number/Boolean/String/Object 参数:number类型的数值基数;一般不需要写,仅作了解,如果需要按照2/8/16进制来转换,需要写;
-
-
String()
- null
- undefined
- null和undefined没有toString方法,所以转换的时候用String()函数;
var testNull=null; console.log(typeof testNull);//object //var testString2=testNull.toString();//Uncaught TypeError:Cannot read property 'toString' of null var testString3=String(testNull); console.log(typeof testString3);//string
-
eval()
-
计算字符串表达式的值并以数值形式返回;
//eval var evalVal="1+2+5+8+10"; console.log(typeof evalVal);//string var evalComputed=eval(evalVal); console.log(evalComputed,typeof evalComputed);//26 "number"
-
toString()
和String()
var testNum=1;
console.log(typeof testNum);//number
var testTarget1=toString(testNum);
var testTarget2=testNum.toString();//推荐用法
var testTarget3=String(testNum);
//var testTarget4=testNum.String();//错误的用法
console.log(typeof testTarget1);//string
console.log(typeof testTarget2);//string
console.log(typeof testTarget3);//string
快速转换成字符串
如果把某个数据转化为字符串,可以有一个快捷的方式,就是把它与一个字符串"“相加就可以了;
//+""用来转换字符串
var numVal=2;
var boolVal=false;
var nullVal=null;
var undefinedVal=undefined;
var numValPlus=numVal+"";
var boolValPlus=boolVal+"";
var nullPlus=nullVal+"";
var undefinedPlus=undefinedVal+"";z;
console.log(numValPlus,typeof numValPlus);
console.log(boolValPlus,typeof boolValPlus);
console.log(nullPlus,typeof nullPlus);
console.log(undefinedPlus,typeof undefinedPlus);
某个数据并不仅限于Number类型;数组也可以的;
console.log([1,2,3,4]+"");//1,2,3,4
再看一组的加法(将字符串转为数字,注意浮点数的运算精度);
字符串快速转换为数字
字符串类型的数字,如果前面放
+
会隐式调用parseFloat
+“1.1"可以转为Number类型
console.log(+"1.2"); //1.2
console.log("1.1" + 1.1);
console.log(+"1.1" + 1.1);
console.log((+"1.1") + (+1.1));//2.2 注:加入括号为清楚起见,不是必需的。
//toString方法;
//22 - > "22"
console.log(typeof 22);
console.log(typeof (22).toString());
var testStr=22+"";//隐式调用toString方法
console.log(typeof 22+"");//+ - * / 2*2+10
console.log(typeof testStr);//2*(2+10)
//eval()
console.log("00000000000000000");
console.log(eval("22+12"));//"22+12" -> 22+12 ->34
//
console.log("**********************");
console.log(typeof (22+""));//string 22 -> "22"
console.log(typeof (+"22"));//"22" -> 22 单目运算符+
console.log([1,2,3,4]+"");//1,2,3,4
console.log("**********************");
console.log("1.1" + 1.1);
console.log(+"1.1" + 1.1);
console.log((+"1.1") + (+1.1));