首页编程js代码转换(帮我转换这段js代码成简体)

js代码转换(帮我转换这段js代码成简体)

编程之家2023-11-0670次浏览

各位老铁们,大家好,今天由我来为大家分享js代码转换,以及帮我转换这段js代码成简体的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

js代码转换(帮我转换这段js代码成简体)

JS的类型怎么转换

这次给大家带来JS的类型怎么转换,JS类型转换的注意事项有哪些,下面就是实战案例,一起来看一下。

隐式类型转换

在 JavaScript中,当我们进行比较操作或者加减乘除四则运算操作时,常常会触发 JavaScript的隐式类型转换机制;而这部分也往往是令人迷惑的地方。譬如浏览器中的 console.log操作常常会将任何值都转化为字符串然后展示,而数学运算则会首先将值转化为数值类型(除了 Date类型对象)然后进行操作。

我们首先来看几组典型的 JavaScript中运算符操作结果,希望阅读完本部分之后能够对每一个条目都能进行合理解释:

//比较

[]==![]// true

js代码转换(帮我转换这段js代码成简体)

NaN!== NaN// true

1== true// true

2== true// false

"2"== true// flase

null> 0// false

null< 0// false

js代码转换(帮我转换这段js代码成简体)

null== 0// false

null>= 0// true

//加法

true+ 1// 1

undefined+ 1// NaN

let obj={};

{}+ 1// 1,这里的{}被当成了代码块

{ 1+ 1}+ 1// 1

obj+ 1// [object Object]1

{}+{}// Chrome上显示"[object Object][object Object]",Firefox显示 NaN

[]+{}// [object Object]

[]+ a// [object Object]

+ []//等价于+""=> 0

{}+ []// 0

a+ []// [object Object]

[2,3]+ [1,2]//'2,31,2'

[2]+ 1//'21'

[2]+(-1)//"2-1"

//减法或其他操作,无法进行字符串连接,因此在错误的字符串格式下返回 NaN

[2]- 1// 1

[2,3]- 1// NaN

{}- 1//-1

原始类型间转换

JavaScript中我们常说的原始类型包括了数值类型、字符串类型、布尔类型与空类型这几种;而我们常用的原始类型之间的转换函数就是 String、Number与 Boolean:

// String

let value= true;

console.log(typeof value);// boolean

value= String(value);// now value is a string"true"

console.log(typeof value);// string

// Number

let str="123";

console.log(typeof str);// string

let num= Number(str);// becomes a number 123

console.log(typeof num);// number

let age= Number("an arbitrary string instead of a number");

console.log(age);// NaN, conversion failed

// Boolean

console.log( Boolean(1));// true

console.log( Boolean(0));// false

console.log( Boolean("hello"));// true

console.log( Boolean(""));// false

最终,我们可以得到如下的 JavaScript原始类型转换表(包括复合类型向原始类型转换的范例):

原始值

转化为数值类型

转化为字符串类型

转化为 Boolean类型

false

0

"false"

false

true

1

"true"

true

0

0

"0"

false

1

1

"1"

true

"0"

0

"0"

true

"1"

1

"1"

true

NaN

NaN

"NaN"

false

Infinity

Infinity

"Infinity"

true

-Infinity

-Infinity

"-Infinity"

true

""

0

""

false

"20"

20

"20"

true

"twenty"

NaN

"twenty"

true

[ ]

0

""

true

[20]

20

"20"

true

[10,20]

NaN

"10,20"

true

["twenty"]

NaN

"twenty"

true

["ten","twenty"]

NaN

"ten,twenty"

true

function(){}

NaN

"function(){}"

true

{}

NaN

"[object Object]"

true

null

0

"null"

false

undefined

NaN

"undefined"

false

ToPrimitive

在比较运算与加法运算中,都会涉及到将运算符两侧的操作对象转化为原始对象的步骤;而 JavaScript中这种转化实际上都是由 ToPrimitive函数执行的。实际上,当某个对象出现在了需要原始类型才能进行操作的上下文时,JavaScript会自动调用 ToPrimitive函数将对象转化为原始类型;譬如上文介绍的 alert函数、数学运算符、作为对象的键都是典型场景,该函数的签名如下:

ToPrimitive(input, PreferredType?)

为了更好地理解其工作原理,我们可以用 JavaScript进行简单地实现:

var ToPrimitive= function(obj,preferredType){

var APIs={

typeOf: function(obj){

return Object.prototype.toString.call(obj).slice(8,-1);

},

isPrimitive: function(obj){

var _this= this,

types= ['Null','Undefined','String','Boolean','Number'];

return types.indexOf(_this.typeOf(obj))!==-1;

}

};

//如果 obj本身已经是原始对象,则直接返回

if(APIs.isPrimitive(obj)){return obj;}

//对于 Date类型,会优先使用其 toString方法;否则优先使用 valueOf方法

preferredType=(preferredType==='String'|| APIs.typeOf(obj)==='Date')?'String':'Number';

if(preferredType==='Number'){

if(APIs.isPrimitive(obj.valueOf())){ return obj.valueOf()};

if(APIs.isPrimitive(obj.toString())){ return obj.toString()};

}else{

if(APIs.isPrimitive(obj.toString())){ return obj.toString()};

if(APIs.isPrimitive(obj.valueOf())){ return obj.valueOf()};

}

throw new TypeError('TypeError');

}

我们可以简单覆写某个对象的 valueOf方法,即可以发现其运算结果发生了变化:

let obj={

valueOf:()=>{

return 0;

}

}

obj+ 1// 1

如果我们强制将某个对象的 valueOf与 toString方法都覆写为返回值为对象的方法,则会直接抛出异常。

obj={

valueOf: function(){

console.log("valueOf");

return{};// not a primitive

},

toString: function(){

console.log("toString");

return{};// not a primitive

}

}

obj+ 1

// error

Uncaught TypeError: Cannot convert object to primitive value

at<anonymous>:1:5

值得一提的是对于数值类型的 valueOf()函数的调用结果仍为数组,因此数组类型的隐式类型转换结果是字符串。而在 ES6中引入 Symbol类型之后,JavaScript会优先调用对象的 [Symbol.toPrimitive]方法来将该对象转化为原始类型,那么方法的调用顺序就变为了:

当 obj[Symbol.toPrimitive](preferredType)方法存在时,优先调用该方法;

如果 preferredType参数为 String,则依次尝试 obj.toString()与 obj.valueOf();如果 preferredType参数为 Number或者默认值,则依次尝试 obj.valueOf()与 obj.toString()。

而 [Symbol.toPrimitive]方法的签名为:

obj[Symbol.toPrimitive]= function(hint){

// return a primitive value

// hint= one of"string","number","default"

}

我们同样可以通过覆写该方法来修改对象的运算表现:

user={

name:"John",

money: 1000,

[Symbol.toPrimitive](hint){

console.log(`hint:${hint}`);

return hint=="string"? `{name:"${this.name}"}`: this.money;

}

};

// conversions demo:

console.log(user);// hint: string->{name:"John"}

console.log(+user);// hint: number-> 1000

console.log(user+ 500);// hint: default-> 1500

比较运算

JavaScript为我们提供了严格比较与类型转换比较两种模式,严格比较(===)只会在操作符两侧的操作对象类型一致,并且内容一致时才会返回为 true,否则返回 false。而更为广泛使用的==操作符则会首先将操作对象转化为相同类型,再进行比较。对于<=等运算,则会首先转化为原始对象(Primitives),然后再进行对比。

标准的相等性操作符(==与!=)使用了Abstract Equality Comparison Algorithm来比较操作符两侧的操作对象(x== y),该算法流程要点提取如下:

如果 x或 y中有一个为 NaN,则返回 false;

如果 x与 y皆为 null或 undefined中的一种类型,则返回 true(null== undefined// true);否则返回 false(null== 0// false);如果 x,y类型不一致,且 x,y为 String、Number、Boolean中的某一类型,则将 x,y使用 toNumber函数转化为 Number类型再进行比较;如果 x,y中有一个为 Object,则首先使用 ToPrimitive函数将其转化为原始类型,再进行比较。

我们再来回顾下文首提出的 []==![]这个比较运算,首先 []为对象,则调用 ToPrimitive函数将其转化为字符串"";对于右侧的![],首先会进行显式类型转换,将其转化为 false。然后在比较运算中,会将运算符两侧的运算对象都转化为数值类型,即都转化为了 0,因此最终的比较结果为 true。在上文中还介绍了 null>= 0为 true的这种比较结果,在 ECMAScript中还规定,如果<为 false,则>=为 true。

加法运算

对于加法运算而言,JavaScript首先会将操作符两侧的对象转换为 Primitive类型;然后当适当的隐式类型转换能得出有意义的值的前提下,JavaScript会先进行隐式类型转换,再进行运算。譬如 value1+ value2这个表达式,首先会调用 ToPrimitive函数将两个操作数转化为原始类型:

prim1:= ToPrimitive(value1)

prim2:= ToPrimitive(value2)

这里将会优先调用除了 Date类型之外对象的 valueOf方法,而因为数组的 valueOf方法的返回值仍为数组类型,则会返回其字符串表示。而经过转换之后的 prim1与 prim2中的任一个为字符串,则会优先进行字符串连接;否则进行加法计算。

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

“js”怎么转换大小写

toUpperCase()

代码:

<script type="text/javascript">

var a="adsadf";

var b=a.toUpperCase();

alert(b);

</script>

JavaScript脚本语言特点:

1、脚本语言。JavaScript是一种解释型的脚本语言,C、C++等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。

2、基于对象。JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。

3、简单。JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。

帮我转换这段js代码成简体

var owner="123456";var sf_mess_cfg={theme:"luxury",color:"red",title:"客户购买意向咨询",send:"发送留言",copyright:"千博提供技术支持",mbpos:"RD"};var sf_mess_msg={emailErr:'请填写正确的电子信箱地址!',messErr:'您的留言字数已超过限制,请保留在1000个字以内!',prefix:'请填写',success:'我们已经收到您的留言,稍候会与您联系。谢谢!',fail:'您的留言发送失败,请重试。'};var sf_mess_cols= [{type:"textarea",mbtype:"message",tip:"留言内容",innertip:"客服不在线时,请给我们留言。我们会及时联系您!",idname:"content"},{type:"text",mbtype:"tel",tip:"手机号码",innertip:"请输入您的手机号码",idname:"phone"},{type:"text",mbtype:"email",tip:"电子邮箱",innertip:"请输入您的电子邮箱",idname:"email"},{type:"text",mbtype:"address",tip:"联系地址",innertip:"请输入您的联系地址",idname:"addr"}];document.write('<script src="scripts/entry.js" type="text/javascript"></script>');

用下面的代码存为html格式运行转换就行了。。。

<html>

<head>

<title>transform between native and ascii</title>

</head>

<script type="text/javascript"><!--

var keyStr="ABCDEFGHIJKLMNOP"+

"QRSTUVWXYZabcdef"+

"ghijklmnopqrstuv"+

"wxyz0123456789+/"+

"=";

function native2ascii(strNative){

var output="";

for(var i=0; i<strNative.length; i++){

var c= strNative.charAt(i);

var cc= strNative.charCodeAt(i);

if(cc> 0xff)

output+="\\u"+ toHex(cc>> 8)+ toHex(cc& 0xff);

else

output+= c;

}

return output;

}

var hexChars="0123456789ABCDEF";

function toHex(n){

var nH=(n>> 4)& 0x0f;

var nL= n& 0x0f;

return hexChars.charAt(nH)+ hexChars.charAt(nL);

}

function ascii2native(strAscii){

var output="";

var posFrom= 0;

var posTo= strAscii.indexOf("\\u", posFrom);

while(posTo>= 0){

output+= strAscii.substring(posFrom, posTo);

output+= toChar(strAscii.substr(posTo, 6));

posFrom= posTo+ 6;

posTo= strAscii.indexOf("\\u", posFrom);

}

output+= strAscii.substr(posFrom);

return output;

}

function toChar(str){

if(str.substr(0, 2)!="\\u") return str;

var code= 0;

for(var i=2; i<str.length; i++){

var cc= str.charCodeAt(i);

if(cc>= 0x30&& cc<= 0x39)

cc= cc- 0x30;

else if(cc>= 0x41&& cc<= 0x5A)

cc= cc- 0x41+ 10;

else if(cc>= 0x61&& cc<= 0x7A)

cc= cc- 0x61+ 10;

code<<= 4;

code+= cc;

}

if(code< 0xff) return str;

return String.fromCharCode(code);

}

//--></script>

<body style="font-family:宋体">

<form name="theForm">

Type in the message here, and click a command button:

<br/>

<textarea name="theText" cols="80" rows="20" wrap="off"></textarea>

<br/>

<input type="button" value="native to ascii"

onClick="document.theForm.theText.value=native2ascii(document.theForm.theText.value);">

<input type="button" value="ascii to native"

onClick="document.theForm.theText.value=ascii2native(document.theForm.theText.value);">

</form>

</body>

</html>

文章到此结束,希望我们对于js代码转换的问题能够给您带来一些启发和解决方案。如果您需要更多信息或者有其他问题,请随时联系我们。

供应链商城,供应链平台有哪些手机软件开发(手机APP软件开发怎么做)