在blazor项目中,JavaScript函数区分null
和undefined
。当从C#(await jsRuntime.InvokeAsync<long>("func", null, "str")
(传递null
时,JS侧接收值null
(typeof arg1 === 'object'
(。从C#侧传递什么来接收undefined
(typeof arg1 === 'undefined'
(?
编辑:显然,null
的行为并不一致,这取决于论点的立场。JS:
func1: function (arg1) {
console.log("func1", typeof arg1);
},
func2: function (arg1, arg2) {
console.log("func2", typeof arg1);
},
C#:
await jsRuntime.InvokeVoidAsync("utils.func1", null);
await jsRuntime.InvokeVoidAsync("utils.func1");
await jsRuntime.InvokeVoidAsync("utils.func1", "aaa");
await jsRuntime.InvokeVoidAsync("utils.func2", null, 123);
await jsRuntime.InvokeVoidAsync("utils.func2", "aaa", 123);
输出:
func1 undefined
func1 undefined
func1 string
func2 object
func2 string
如果您想知道在javascript函数中是发送参数还是为null,可以使用===undefined
或===null
。
<script>
var func1=(arg1)=> {
console.log("func1", arg1,arg1===null,arg1===undefined,typeof arg1);
}
</script>
但您需要发送";空显性";
var data = (string)null; //<--I check with this
await JSRuntime.InvokeAsync<string>("func1","Hello world");
await JSRuntime.InvokeAsync<string>("func1", data);
await JSRuntime.InvokeAsync<string>("func1");