js运算符的一些特殊用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js运算符的一些特殊用法相关的知识,希望对你有一定的参考价值。

参考技术A 本文集合了了js运算符的一些特殊应用。
js位运行符的运用。
js运算符的使用技巧。
是否包含指定字符:
~
~"str1".indexOf("str2")
str1
被查找的字符串
str2
查找的字符串
如果
str1
不含有
str2
,则返回数字
0

例:
var
str1='abc';
var
str2='a';
if(~str1.indexOf(str2))
console.log('有'+str2)
//有a
else
console.log('无'+str2)

取整:
|
num
|
0
num
整数
例:
1.3
|
0
//1
取半:
>>
num
>>
1
num
整数
例:求
50

1/2
50
>>
1
//25
有除号
/
干嘛不用呢?多好呀:
50/2
//25
成长值评级:
||
需求1:
成长值为5是1星;
成长值为10是2星;
成长值为12是3星;
成长值为15是4星;
其他都是0星。
('5':1,'10':2,'12':3,'15':4[val]
||
0);
val
成长值。
判断奇偶:
&
num
&
1
num
整数
例:
var
num=3;
if
(num
&
1)

console.log("num是奇数");
//num是奇数

else

console.log("num是偶数");

交换两个数字的值:
^=
使用位运行符:
var
num1
=
1,
num2
=
2;
num1
^=
num2;
num2
^=
num1;
num1
^=
num2;
console.log(num1,num2);
//2
1
使用数组:
var
num1
=
1,
num2
=
2;
num1
=
[num2,
num2
=
num1][0];
console.log(num1,num2);
//2
1
2的n次方:
<<

**
1
<<
n-1
使用位运行符:
2的n次方
例:2的3次方:1<<3
//8
使用幂运行符:
个人觉得这个不如直接使用

的方式好。
x的y次方:
x**y
例:2的3次方:2**3
//8
方法比较:
使用
<<
的方式可以支持负数,**
需要用括号否则出错。
使用
**
比较直观,没研究过
<<
方法的任意数的任意次方的规律。
1<<3
//8
2**3
//8
-1<<3
//-8
-2**3
//
报错
-(2**3)
//-8
3<<2
//12
错误
3**2
//9
正确
是否是指定字符串开头:
!

^
!str1.indexOf("str2")
例:
var
str1='abc';
var
str2='a';
if(!str1.indexOf(str2))
console.log('是开头')
else
console.log('不是开头')

使用正则方式
/^a/.test('abc')
//a开头,true
/c$/.test('abc')
//c结尾,true
字符串转数字:
+
+str
例:
var
str='123';
typeof(str)
//string
typeof(+str)
//number
转为
Boolean
值:
!!
!!obj
例:
!!'text'
//true

el 表达式的基本用法

一、EL简介

1.语法结构
expression2.[].EL.[].?使[] user.My-Name应当改为 user[MyName][]. sessionScope.user[data]中data 是一个变量
3.变量
EL存取变量数据的方法很简单,例如:$username。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
属性范围在EL中的名称
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope

二、EL隐含对象
1.与范围有关的隐含对象
与范围有关的EL 隐含对象包含以下四个:pageScope、requestScope、sessionScope 和applicationScope;
它们基本上就和JSP的pageContext、request、session和application一样;
在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得其他相关信息。

例如:我们要取得session中储存一个属性username的值,可以利用下列方法:
session.getAttribute(“username”) 取得username的值,
在EL中则使用下列方法
$sessionScope.username

2.与输入有关的隐含对象
与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。

例如我们要取得用户的请求参数时,可以利用下列方法:
request.getParameter(String name)
request.getParameterValues(String name)
在EL中则可以使用param和paramValues两者来取得数据。
param.name paramValues.name

3.其他隐含对象

cookie
JSTL并没有提供设定cookie的动作,
例:要取得cookie中有一个设定名称为userCountry的值,可以使用$cookie.userCountry来取得它。

header和headerValues
header 储存用户浏览器和服务端用来沟通的数据
例:要取得用户浏览器的版本,可以使用$header[“User-Agent”]。
另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得这些值。

initParam
initParam取得设定web站点的环境参数(Context)
例:一般的方法String userid = (String)application.getInitParameter(“userid”);
可以使用 $initParam.userid来取得名称为userid

pageContext
pageContext取得其他有关用户要求或页面的详细信息。
pageContext.request.queryString pageContext.request.requestURL 取得请求的URL,但不包括请求之参数字符串
pageContext.request.contextPathwebapplication pageContext.request.method 取得HTTP 的方法(GET、POST)
pageContext.request.protocol使(HTTP/1.1HTTP/1.0) pageContext.request.remoteUser 取得用户名称
pageContext.request.remoteAddrel 表达式的基本用法

[Python]-11-星号变量的特殊用法

嵌入式 C 宏定义特殊操作符的用法

else 的特殊用法和三目运算

[Java] 有趣的知识又增加了之 —— &运算的特殊用法

JS 数组特殊用法总结