帮我弄清楚,我正在学习JS,我在代码中遇到了以下问题:
function fieldsShowWhenObjChanged() {
var filterObjTypeVal = $('#FilterObjectType').val();
$('#case_number').css('display', filterObjTypeVal == "CLAIM" ? '' : 'none');
$('#srv_services').css('display', filterObjTypeVal == "SRV_SERVICE" ? '' : 'none');
if (filterObjTypeVal == "SRV_SERVICE") {
let takeUnPublishedServices = true;
$("#FilterServiceCode").AjaxMultipleSelectHierarchy({
selectAllText: "Выбрать все Услуги",
selectedAll: "Выбраны все Услуги",
placeholder: 'Выберите Услуги',
includeParent: true,
baseClass: "ms",
link: '@Url.Action(nameof(ManageController.GetItems))',
query: {
type: "services_with_subservices",
takeUnPublishedServices: takeUnPublishedServices,
},
onItemCreate: function ($item) {
sliceText($item.find('div').addClass('sliceText_v2'));
},
});
$("#IsCheckTakeUnPublishedServices").prop('checked', takeUnPublishedServices);
}
}
在这种情况下,错误不会发生,因为变量是let takeUnPublishedServices = true显式声明的,但是如果你像这样重写代码,它会发誓它没有看到变量,为什么,我query传递相同的值给它,什么是传递值和变量声明之间的区别?
function fieldsShowWhenObjChanged() {
var filterObjTypeVal = $('#FilterObjectType').val();
$('#case_number').css('display', filterObjTypeVal == "CLAIM" ? '' : 'none');
$('#srv_services').css('display', filterObjTypeVal == "SRV_SERVICE" ? '' : 'none');
if (filterObjTypeVal == "SRV_SERVICE") {
$("#FilterServiceCode").AjaxMultipleSelectHierarchy({
selectAllText: "Выбрать все Услуги",
selectedAll: "Выбраны все Услуги",
placeholder: 'Выберите Услуги',
includeParent: true,
baseClass: "ms",
link: '@Url.Action(nameof(ManageController.GetItems))',
query: {
type: "services_with_subservices",
takeUnPublishedServices: true,
},
onItemCreate: function ($item) {
sliceText($item.find('div').addClass('sliceText_v2'));
},
});
$("#IsCheckTakeUnPublishedServices").prop('checked', takeUnPublishedServices);
}
}
在一条线上发誓
在其中使用变量,您删除的定义。
由于未声明变量 - 您会看到有关它的错误。
如果你去掉这一行,那么错误就会消失,这将表明直接传递值或作为变量传递值之间没有区别
我假设错误发生在线上
这并不奇怪。毕竟,变量
takeUnPublishedServices没有被声明。如果你认为这里:
您正在声明一个变量,那么它不是。你在属性中传递了
query一个对象,其键名type和takeUnPublishedServices. 这里没有变量声明。例子
你不会争辩说变量是在这里声明
field1的field5吧?