想问一下,在java脚本中写的问号是啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了想问一下,在java脚本中写的问号是啥意思?相关的知识,希望对你有一定的参考价值。
比如xmlHttpRequest.open("POST", "/control/user/manage.do?method=generate", true);这句中有一个问号
var url = '<c:url value="/monitor/priceinfo/searchJiancp.jhtm?dwTable.tableid=$dwTable.tableiddate=' + d + '" />';
这句中也有一个问号
首先说下, 这个问号跟java没有关系, 是URL中的问号.
url中的问号用于标识客户端向服务器发送的额外信息, 称为query string查询字符串.
2, query string干嘛用的?
是客户端向服务器发送信息的一种途径, 或者说是一部分. 通常是以键值对的方式出现比如: zhidao.baidu.com/question/384102828.html?push=keyword&prevPage=google.com.hk. 你可以理解这是一个方法调用, 地址就是方法名, 查询字符串就是参数.
3, 为什么要向服务器发送信息?
HTTP协议是无连接协议, 服务器不与客户端建立连接, 所以不能向客户端主动发送信息. 必须要由用户发起请求, 服务器返回应答.
4, 什么时候用?
对于用户来说不需要知道, 也无法知道. 对于开发人员来说, 在不能使用POST的时候(比如跨域访问), 需要传递信息, 就只能使用查询字符串了.
5, 为什么用的少?
一是因为url是明文传输的不安全. 二是因为长度通常都有限制, 只能发送少量数据. 而是将数据包装在POST内, 则不存在这些缺点. 所以现在相对用的比较少了.
不知道这样说你是不是明白了... 参考技术A searchJiancp.jhtm?dwTable.tableid=$dwTable.tableiddate=
这是一种 get 类型的传参方式 , 跟 post 相对应 。
上面定的有一点错,正确的如下:
searchJiancp.jhtm?dwTable.tableid=$dwTable.tableid&date=
传入的
key 是 : dwTable.tableid value 是: $dwTable.tableid
另一 key 是 : date value: d的值
更多细节请百度: html form get post 。 参考技术B ?是请求路径和参数的分隔符。?之前的是请求路径,?之后是以&连接的参数字符串追问
前面是路径我知道,想再问一下?那后面为什么要跟参数?跟参数有什么意义吗?
追答是这样,如果是表单提交的话,一般可以不跟参数。但是有些非表单提交,在实际处理过程中可能会用到一些前置条件或约束。这些信息就需要以参数的形式进行标示。这好比一个有参数的方法。如果方法体内的逻辑需要用到传入的参数,那么参数你就不能传null、
本回答被提问者采纳 参考技术C 理解为连接字符串,就是?前面的是URL路径。后面的的传的参数追问前面是路径我知道,想再问一下?那后面为什么要跟参数?跟参数有什么意义吗?
追答页面不都是在地址栏打开的,有在后台的Servlet跳转的。例如你的注册页面里有用户名密码,提交到一个新页面显示,就要把用户名username=XXX密码password=XXX以参数的形式传的到JSP,JSP才能显示你刚才输入的用户名密码
参考技术D ?号是Ajax异步访问你的url地址,后面跟的参数追问想再问一下?后面为什么要跟参数?跟参数有什么意义吗?
追答你可以在后台得到这个参数值,根据这个参数值判断要调用哪个方法或者后台要做什么样的响应给用户。
问号和点运算符是啥意思?在 C# 6.0 中是啥意思?
【中文标题】问号和点运算符是啥意思?在 C# 6.0 中是啥意思?【英文标题】:What does question mark and dot operator ?. mean in C# 6.0?问号和点运算符是什么意思?在 C# 6.0 中是什么意思? 【发布时间】:2015-04-05 18:52:55 【问题描述】:在 VS2015 预览版中使用 C# 6.0,我们有一个新的运算符,?.
,可以这样使用:
public class A
string PropertyOfA get; set;
...
var a = new A();
var foo = "bar";
if(a?.PropertyOfA != foo)
//somecode
它到底是做什么的?
【问题讨论】:
如果您有兴趣将可空的 boolbool ?
转换为 bool
值 - ***.com/questions/6075726/…
【参考方案1】:
在扁平化层次结构和/或映射对象时非常有用。而不是:
if (Model.Model2 == null
|| Model.Model2.Model3 == null
|| Model.Model2.Model3.Model4 == null
|| Model.Model2.Model3.Model4.Name == null)
mapped.Name = "N/A"
else
mapped.Name = Model.Model2.Model3.Model4.Name;
可以这样写(逻辑同上)
mapped.Name = Model.Model2?.Model3?.Model4?.Name ?? "N/A";
DotNetFiddle.Net Working Example.
(?? or null-coalescing operator 与 ? or null conditional operator 不同)。
它也可以在Action 的赋值运算符之外使用。而不是
Action<TValue> myAction = null;
if (myAction != null)
myAction(TValue);
可以简化为:
myAction?.Invoke(TValue);
DotNetFiddle Example:
使用系统;
public class Program
public static void Main()
Action<string> consoleWrite = null;
consoleWrite?.Invoke("Test 1");
consoleWrite = (s) => Console.WriteLine(s);
consoleWrite?.Invoke("Test 2");
结果:
测试 2
基本上,我已经申请了?。模型之后的运算符也是如此。我想知道它是否可以直接应用于模型还是仅适用于导航属性?
无论值的类型如何,左侧值上的 ? or null conditional operator 运算符。编译器并不关心右边的值是什么。这是一个简单的编译器magic(意味着它做了一些你已经可以做的事情,只是简化了原因)。
例如
var a = model?.Value;
和说的一样
var a = model == null ? null : model.Value;
在第二种情况下,检查 null 的评估与返回的值没有关联。 null 条件运算符 基本上只在左值为 null 时返回 null。
成员的类型(方法、字段、属性、构造函数).Value
无关紧要。
您的 DotNetFiddle 示例不起作用的原因是用于 .Net 4.7.2
的编译器与支持 null 条件运算符的 c# 版本不兼容。将其更改为 .Net 5,有效:
https://dotnetfiddle.net/7EWoO5
【讨论】:
为了拯救人们查找什么?? is.. 它是空合并运算符,如果不为空则返回 Name,否则返回“N/A”。 @Erik Philips 我认为您需要添加|| Model.Model2.Model3.Model4.Name == null
以具有相同的逻辑,否则如果Model.Model2.Model3.Model4.Name
是null
,mapped.Name
将保持@ 987654342@
@ErikPhilips 我猜不在同一页面上。如果Model.Model2.Model3.Model4.Name
是null
,请尝试查看两种情况会发生什么。
结果为“N/A”,请再次阅读第一条评论。 DotNetFiddle.Net Working Example.
@ErikPhilips:这与第一条评论无关,因为这与您的第一个示例无关。在这种情况下,您将跳转到else
-分支并拥有mapped.Name = Model.Model2.Model3.Model4.Name -> mapped.Name = null
,而您的第二个示例将替换为mapped.Name = "N/A"
。见edited DotNetFiddle【参考方案2】:
这对于 C# 来说相对较新,这使我们可以轻松地在方法链接中调用关于 null 或非 null 值的函数。
实现相同目标的旧方法是:
var functionCaller = this.member;
if (functionCaller!= null)
functionCaller.someFunction(var someParam);
现在它变得更容易了:
member?.someFunction(var someParam);
我强烈推荐this doc page。
【讨论】:
快速提问..var user = db.Users.Where(m=>m.id == id).FirstOrDefault(); Console.WriteLine(user?.id);
这是否有效或?.
仅适用于导航属性?请检查这个小提琴:dotnetfiddle.net/2BblBv【参考方案3】:
这是null conditional 运算符。它基本上意味着:
“计算第一个操作数;如果为 null,则停止,结果为 null。否则,计算第二个操作数(作为第一个操作数的成员访问)。”
在您的示例中,关键是如果a
是null
,那么a?.PropertyOfA
将评估为null
而不是抛出异常 - 然后它将null
引用与foo
进行比较(使用字符串的==
重载),发现它们不相等,执行将进入if
语句的主体。
换句话说,是这样的:
string bar = (a == null ? null : a.PropertyOfA);
if (bar != foo)
...
...除了a
只计算一次。
请注意,这也可以更改表达式的类型。例如,考虑FileInfo.Length
。这是long
类型的属性,但如果你将它与空条件运算符一起使用,你最终会得到long?
类型的表达式:
FileInfo fi = ...; // fi could be null
long? length = fi?.Length; // If fi is null, length will be null
【讨论】:
@SLaks:我认为这是“条件空值”,但我可能错了。上次我检查 Roslyn 语言功能文档时,它还没有被重命名为。也许来源是这里的权威 - 将检查。 @SLaks:当然。在 SyntaxKind 中,它显然是 ConditionalAccessExpression,它们都不是令人讨厌的...... 我更喜欢名字“猫王”运营商:P 为了记录,我已经看到了这个运算符的五个不同名称:安全导航、空条件、空传播、条件访问、猫王。 有用的注意...您还可以在数组上使用 null 条件,例如:a?[x]以上是关于想问一下,在java脚本中写的问号是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章