javascript类型转换

转换为数字

Number();//转数字

//可以把任意值转换成数字,如果要转换的目标对象(一般是字符串)中有不是数字的值,则会返回 NaN。
Number('1')   // 1
Number(true)  // 1
Number('123s') // NaN
Number({})  //NaN
Number(null);//在这里null可以转换为0
Number(undefined);//NaN

 parseInt();//转整数

console.log(parseInt("10"));//10
console.log(parseInt("10afrswfdsf"));//10
console.log(parseInt("1fds0"));//1
console.log(parseInt("10.98"));//10
console.log(parseInt("10.98fdsfd"));//10

console.log(parseInt("g10"));//NaN
console.log(parseInt(null));//NaN
console.log(parseInt(undefined));//NaN

//一个得到NaN,一个得到前面的数值
console.log(parseInt('2',2));//NaN
console.log(parseInt('2',10));//2

 parseFloat()//转小数

console.log(parseFloat("10"));//10
console.log(parseFloat("10afrswfdsf"));//10
console.log(parseFloat("g10"));//NaN
console.log(parseFloat("1fds0"));//1
console.log(parseFloat("10.98"));//10.98
console.log(parseFloat("10.98fdsfd"));//10.98
console.log(parseFloat("2.4.6.8"));//2.4
console.log(parseFloat(null));//NaN
console.log(parseFloat(undefined));//NaN

 

//总结:想要转整数用parseInt(),想要转小数用parseFloat()
//想要转数字:Number();要比上面的两种方式严格

 

转换为字符串

需要注意的是:null、undefined 没有.toString() 方法。

.toString()方法

// Object.prototype.toSring()  返回一个表示该对象的字符串。
/*
每个对象都有一个 toString() 方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。
默认情况下,toString() 方法被每个 Object 对象继承。
如果此方法在自定义对象中未被覆盖,toString() 返回 "[object type]",其中 type 是对象的类型。
*/
let obj={a:'zhangsan', b:14};
console.log(obj.toString());//[object object]
let obj2=undefined;
console.log(obj2.toString());


// Array.prototype.toSring()
let arr=[1,2,3,4,5];
console.log(arr.toString());//1,2,3,4,5
console.log([].toString());//''


// Function.prototype.toSring()
function ceshi(){
    console.log('aaa');
    return "张三";
}
console.log(ceshi.toString);


// Number.prototype.toSring()
let num=Number('123');
console.log(num.toString());//'123'


// String.prototype.toSring()
// 字符串对象的 toString() 方法返回一个字符串,表示指定的字符串。
const stringObj = new String('foo');
console.log(stringObj);// expected output: String { "foo" }
console.log(stringObj.toString());// expected output: "foo"


/*String 对象覆盖了 Object 对象的 toString() 方法;
并没有继承 Object.prototype.toString()。
对于 String 对象,toString() 方法返回一个字符串来表示这个对象,和 String.prototype.valueOf() 方法的返回值相同。
*/
let str='张三丰';
console.log(str instanceof String);
console.log(str.toString());


//Boolean.prototype.toString()
console.log(typeof true);//boolean
console.log(true.toString());//true
console.log(typeof true.toString());//true

//Symbol.prototype.toString()


//Date.prototype.toString()


//URL.toString()


//Location.toString()


// Selection.toString()


// Range.toString()


// Error.prototype.toString()


// TrustedHTML.toString()


// TrustedScript.toString()


// URLSearchParams.toString()


// CSSTransformComponent.toString()


// WorkerLocation.toString()


// HTMLAreaElement.toString()


// HTMLAnchorElement.toString()


// RegExp.prototype.toString()


//BigInt.prototype.toString()


// TypedArray.prototype.toString()

 

 

//2 String();

//
// var num1=20;
// console.log(String(num1));

//如果变量有意义调用.toString()使用转换
//如果变量没有意义使用String()转换

// var num2;
// console.log(num2.toString());
// var num3=null;
// console.log(num3.toString());

//这个可以
// var num2;
// console.log(String(num2));
// var num3=null;
// console.log(String(num3));


转换为布尔类型

//1 Boolean(值);

// console.log(Boolean(1));//true
// console.log(Boolean(0));//false
// console.log(Boolean(11));//true
// console.log(Boolean(-10));//true
// console.log(Boolean("哈哈"));//true
// console.log(Boolean(""));//false
// console.log(Boolean(null));//false
// console.log(Boolean(undefined));//false

 

//非(!)运算符

var a;// undefined
!a // true
!!'hello' // true
!123 // false
!null // true

 

// var str=10;
// console.log(+str);

 

隐式类型转换

let str='123';
console.log(typeof -str);
console.log(-str);//-123(Number)
console.log(str+1);//1231(String)
console.log(+str+1);//124(Number)
let res=str-1;
console.log(res);//122(Number)

 

对象转换

对象直接参与计算时,系统会根据计算的场景在 string/number/default 间转换。

  • 如果声明需要字符串类型,调用顺序为 toString > valueOf
  • 如果场景需要数值类型,调用顺序为 valueOf > toString
  • 声明不确定时使用 default ,大部分对象的 default 会当数值使用

posted on 2022-10-06 20:40  前端码牛  阅读(19)  评论(0编辑  收藏  举报

导航