189 8069 5689

javascript加号,js需要加分号吗

JavaScript中,+等于多少

小学数学中老师有教你+这个符号本身等于多少?

为西山等地区用户提供了全套网页设计制作服务,及西山网站建设行业解决方案。主营业务为网站设计制作、成都网站建设、西山网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

js中+有两个用处:

是数学意义的加号,1+2=3这里是1和2的值加法运算结果等于3,并不是+号本身等于3

2.是连字符:一个变量name值为:tom,那么:"你好"+name结果是:你好tom。

[img]

浅谈在js传递参数中含加号(+)的处理方式

一般情况下,URL

中的参数应使用

url

编码规则,即把参数字符串中除了

-_.

之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。

但是对于带有中文的参数来说,这种编码会使编码后的字符串变得很长。

如果希望有短一点的方式对参数编码,可以采用

base64

编码方式对字符串进行编码,但是

base64

编码方式不能处理

JavaScript

中的中文,因为

JavaScript

中的中文都是以

UTF-16

方式保存的。

base64

只能处理单字节字符,所以不能直接用

base64

对带有中文的

JavaScript

字符串进行编码。

但是可以通过

utf.js

这个程序中提供的

utf16to8

来将

UTF-16

编码的中文先转化为

UTF-8

方式,然后再进行

base64

编码。

这样编码后的字符串,在传递到服务器端后可以直接通过

base64_decode

解码成

UTF-8

的中文字符串。

但是还有个问题需要注意。

base64

编码中使用了加号(+),而

+

URL

传递时会被当成空格,因此必须要将

base64

编码后的字符串中的加号替换成

%2B

才能当作

URL

参数进行传递。

否则在服务器端解码后就会出错。

所以我们需要做的就是encodeURI(str).replace(/\+/g,'%2B')

以上就是小编为大家带来的浅谈在js传递参数中含加号(+)的处理方式全部内容了,希望大家多多支持脚本之家~

js 加号运算符使用 2021-03-26

js中加号+ 运算符可以用在一元运算 与 二元运算 

1,  一元运算请况

语法:  + Expression

   +'号运算符作为一元运算符时,Expression将进行 ToNumber() 操作

经常使用 +a 类似的形式对变量a进行类型转换 ,如下:

 const a = '1';

  +a  // 输出为1 (变为number类型);

ToNumber( argument )转换方式:

Undefined:  return NaN,

Null:return +0,

Bollean: true return 1,false return 0,

Number:  return value

String:  若字符串为纯数字时返回转换后的数字;非纯数字返回NaN

Symbol  抛出 TypeError 异常

Object   进行以下步骤:

         1.先进行ToPrimitive(argument, hint Number)得到rs;   2.然后返回 ToNumber(rs)的结果。

语法: ToPrimitive ( input [, PreferredType] )

参数:

①参 input :传入的值。

②参数 PreferredType :可选,需要被转换的类型。 '+'加号作为一元运算符时,此值为“number”;而作为二元运算符时,未传递此值,以默认的“default”代替。

2. 二元运算符

2.1 解析步骤

简单概括为下面4个步骤:

1) 值进行GetValue()操作。

2) 值进行ToPrimitive()操作,

3) 若一方为String类型,2个值都进行ToString()转换,最后进行字符串连接操作。

4) 若都不是String类型,2个值都进行ToNumber()转换,最后进行算数加法运算。

2.2.1 方法签名

语法: ToPrimitive ( input [, PreferredType] )

参数:

①参 input :传入的值。

②参数 PreferredType :可选,需要被转换的类型。'+'加号作为一元运算符时,此值为“number”;而作为二元运算符时,未传递此值,以默认的“default”代替。

2.2.2 解析说明

ToPrimitive()的详细解析过程可以看这里:

简化为以下步骤:

( PreferredType是为 非基础类型 决定是优先使用valueOf方法还是toString方法,对基础类型无效),指定为number优先使用valueOf方法,指定string,优先使用toString方法

1) 若input类型为原始值(如:Undefined、Null、Boolean、Number、String、Symbol),直接返回input的本身 。 直接忽略 PreferredType

2) 若input类型为object(如:Array、Object、Date),将根据第②个参数 PreferredType 的值进行以下操作:

就像之前讲的,'+'加号作为一元运算符时, 传递参数 PreferredType 的值为“number”;而作为二元运算符时,未传递此值时以默认的“default”代替。

在上面的图中,只看到 PreferredType 的值为“number” 或 “string” 时才进行解析,那么默认的“default”表示什么呢?

ps: Date类型内部重写了@@toPrimitive()方法,将“default”设置为“string”,而其他内置的对象都将“default”设置为“number” 。

Date.prototype[@@toPrimitive]:

2.3 示例

1) String + String

说明:进行字符串连接操作

'a' + 'b'; // = 'ab'

'1' + '2'; // = '12'

2) Number + Number

说明:进行算数的加法操作

1 + 2; // = 3

3) Number + String or String + Number

说明:Number类型的值先进行ToString()转换,随后再与另一个String类型的值进行拼接操作

1 + '0'; // = '10'

1 + '0a'; // = '10a'

'1' + 2; // = 12

4) Array + String or Array + Number

说明:Array类型进行ToPrimitive()转换时,先执行valueOf(),因其返回一个object类型的值,所以又执行了toString()方法。

var tmpList = ['a', 'b', 'c'];

tmpList.valueOf(); // = ["a", "b", "c"]  输出自身

tmpList.toString(); // a,b,c

// 1.Array + String

tmpList + 'd'; // = a,b,cd

// 2.重写Array的valueOf()方法,使其返回一个非object

Array.prototype.valueOf = function (e) {

return this.join('-');

}

tmpList + 'd'; // = a-b-cd

5) Date + String or Date + Number

说明:上面已经讲过,Date类型重写了ToPrimitive(),所以先调用toString(),若返回值为object,再调用valueOf()。

var dt = new Date();

dt.valueOf(); // = 1503501745901

dt.toString(); // Wed Aug 23 2017 23:22:25 GMT+0800 (中国标准时间)

// 1.Date + String : dt直接使用了dt.toString()方法

dt + 'd'; // = Wed Aug 23 2017 23:22:25 GMT+0800 (中国标准时间)d

// 2.重写Date的toString()方法,使其返回一个object的值

Date.prototype.toString = function (e) {

return { year: this.getFullYear() };

}

// 略过了 dt.toString(),调用了 dt.valueOf()

dt + 'd'; // = 1503501745901d

End

Javascript中的+号问题

不是的,有个口诀我告诉你啊

单双加

'"+name+"'

这个是用于字符串和变量的拼接使用的

var name = "yugi";

var str = "select name from table where name='"+name+"'";

形同:

select name from table where name='yugi'

单百双加

'%"+name+"%'

这个是后台语言用于查询数据库的语句,like,模糊查询

String name = "yugi";

String sql = "select name from table where name like '%"+name+"%'";

形同:

select name from table where name like '%yugi%'

前后2个双引号其实是和别的双引号配对的,里面的单引号就是包裹这个变量的


标题名称:javascript加号,js需要加分号吗
当前URL:http://cdxtjz.cn/article/dsohcih.html

其他资讯