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));

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了