jquery变量var的使用

article/2025/11/7 14:28:55

变量var的使用

js的变量没有类型

                    var $li = $('#' + file.id),$percent = $li.find('.progress span');//console.log("percentage:", percentage);// 避免重复创建if (!$percent.length) {$percent = $('<p class="progress"><span></span></p>').appendTo($li).find('span');}

如果是null不会进入if

如果是一个数组会进入

空字符串不会进入

如果是undefined不会进入

如果是1会进入

如果是0不会进入

如果是字符串1也会进入

ES6 改变了现状, 引入了新的 let 关键字, 提供了除 var 以外的另一种变量声明方式。

let 关键字可以将变量绑定到所在的任意作用域中(通常是 { .. } 内部)。 换句话说, let为其声明的变量隐式地了所在的块作用域。

与var不同的是,它声明的变量只能是全局或者整个函数块的换句话,块级 == { }

let 声明的变量只是在其声明的块或者子块中可用,这一点,与var相似。二者的主要区别在于var声明的变量的作用域是整个封闭函数,而let声明的作用域是块。

 1 function varTest() {2     var x = 1;3     if (true) {4     var x = 2;  // 同样的变量!5     console.log(x);  // 26     }7     console.log(x);  // 28 }9 
10 function letTest() {
11     let x = 1;
12     if (true) {
13     let x = 2;  // 不同的变量
14     console.log(x);  // 2
15     }
16     console.log(x);  // 1
17 }

当用到内部函数时候,let 会让你的代码更加简洁。

 1 var list = document.getElementById('list');2 3 for (let i = 1; i <= 5; i++) {4     let item = document.createElement('li');5     item.appendChild(document.createTextNode('Item ' + i));6 7     item.onclick = function(ev) {8       console.log('Item ' + i + ' is clicked.');9     };
10     list.appendChild(item);
11 }
12 
13 // to achieve the same effect with 'var'
14 // you have to create a different context
15 // using a closure to preserve the value
16 for (var i = 1; i <= 5; i++) {
17     var item = document.createElement('li');
18     item.appendChild(document.createTextNode('Item ' + i));
19 
20     (function(i){
21     item.onclick = function(ev) {
22       console.log('Item ' + i + ' is clicked.');
23     };
24     })(i);
25     list.appendChild(item);
26 }

以上示例的工作原理是因为(匿名)内部函数的五个实例引用了变量i的五个不同实例。注意,如果将let 替换为 var, 则它将无法正常工作,因为所有内部函数都将返回相同的i,6是最终值。此外我们可以通过将创建新元素的代码移动到每个循环的作用域来保持循环更清晰。

在程序或者函数的顶层,let 并不会像var 一样在全局对象上创建一个属性,比如:

1 var x = "apple";
2 let y = "apple";
3 console.log(this.x);  //'apple'
4 console.log(this.y);  //undefined

在处理构造函数的时候,可以通过let 绑定来共享一个或者多个私有成员,而不使用闭包:

 1 var Thing;2 {3     let privateScope = new WeakMap();4     let counter = 0;5 6     Thing = function(){7         this.someProperty = 'foo';8         privateScope.set(this, {9             hidden: ++counter,
10         });
11     };
12 
13     Thing.prototype.showPublic = function(){
14         return this.someProperty;
15     };
16 
17     Thing.prototype.showPrivate = function(){
18         return privateScope.get(this).hidden;
19     };
20 }
21 
22 console.log(typeof privateScope);   //undefined
23 
24 var thing = new Thing();
25 console.log(thing);                //Thing { someProperty: 'foo' }
26 console.log(thing.showPublic());   //foo
27 console.log(thing.showPrivate());  //1

当在块中使用时,let 将变量的作用域限制为该块。注意var 的作用域在它被声明的函数内区别。

 1 var a = 1;2 var b = 2;3 4 if(a === 1){5     var a = 11;6     let b = 22;7 8     console.log(a);   // 119     console.log(b);   // 22
10 }
11 console.log(a);   // 11
12 console.log(b);   // 2

总之,let 的作用域是自己最近的{}

		var names = ["00:00","23:00","22:00","21:00","20:00","19:00","18:00","17:00","16:00","15:00","14:00","13:00","12:00","11:00","10:00","09:00","08:00","07:00","06:00","05:00","04:00","03:00","02:00","01:00"];var url = CONTEXT_PATH +"/cusviews/dev/getRadarChartName";var param = {deviceCode:deviceCode}var retData = $.getData(url,param)if(1000!=retData.status){return;}var data = retData.data;if(null==data){return;}var rlt = {"data" : []};var rltdata = [];var dataList = new Array();function isInArray(arr,value){for(var i = 0; i < arr.length; i++){if(value === arr[i]){return true;}}return false;}$.each(data.textlist,function(j,k){let obj = {};if(isInArray(names,k.substring(11,16))){obj.text = k.substring(11,13);}else{obj.text = "";}obj.max = data.maxlist[j];rlt.data.push(obj);})
window.onload = function()
{var sum = 0;for (var i = 0;i <10;i++){sum += i;   }alert(sum);alert("i="+i);
}
</script>
--------------------- 
上面的代码可输出i
<script>
window.onload = function()
{var sum = 0;for (let i = 0;i <10;i++){sum += i;   }alert(sum);alert("i="+i);
}
</script>
--------------------- 
i未定义

è¿éåå¾çæè¿°

let具有自己的块级作用域,所以for循环转一次,创建一个块级作用域,思路与闭包相同,分别储存了5个不同的i变量。

var lis = document.getElementsByTagName("li");
for(let i=0; i<lis.length;i++){
lis[i].onclick = function(){
alert(i);
}
}
(function () {})();(function ($) {})
(jQuery)
(function (window, $) {})(window, jQuery);(function (window, $, undefined) {})(window, jQuery);

var _util = function () {this.QueryFormSerializeArray = function (domid) {var form = null;if (typeof (domid) === "string")from = $('#' + domid);elsefrom = domid;var p = from.serializeArray();var s = $.map(p, function (n) {var t = $("#" + n.name);if (t.size() == 0)t = from.find("*[textboxname='" + n.name + "']");var query = {};var s = $.trim(t.attr('data-query'));if (s) {if (s.substring(0, 1) != '{') {s = '{' + s + '}';}query = (new Function('return ' + s))();if (query.filed) {query.name = query.filed;//query.remove("filed");}}//console.log(query);return $.extend({}, n, query);});return s;};/*** 序列化Form 返回字符串* @param  {string} domid* @return {any} 序列化后的*/this.QueryFormSerializeString = function (domid) {var s = this.QueryFormSerializeArray(domid);var strpars = JSON.stringify(s);return strpars;};
};$Core.util = new _util();

 

function ($),直接进入

	$.extend({renderSelectorMyf : function(options){return new renderSelectorMy(options);}});

new实例化的时候进入方法

;(function($){   debugger;var options = {fieldCode: "gfyId",url: "../../Security/selector/user/PublicServiceUserList.html?s=" + Math.random(),multi: false,code: "gfyId,gfyIdName",keyRespField: "gfyId,id",dictCode: "publicserviceName",area: ['90%','90%']};/*引用查询选择*/function renderSelectorMy(options){var defaults = {};this.settings = $.extend({},defaults,options);var $domObj = $("#" + this.settings.fieldCode + "-popSelector");this.settings.url = $domObj.attr("action") ? $domObj.attr("action") : this.settings.url;this.settings.multi = $domObj.attr("multi") ? $domObj.attr("multi") : this.settings.multi;this.settings.code = $domObj.attr("codeAndName") ? $domObj.attr("codeAndName").split(",") : this.settings.code.split(",");this.settings.keyRespField = this.settings.keyRespField ? this.settings.keyRespField.split(",") : "";this.init();}//为函数添加原型链上的方法renderSelectorMy.prototype = {init: function(){var _self = this,_keys = _self.settings.code;$("input[name='" + _keys[0] +"']").parent().parent().find("button").unbind('click').bind('click', function(){var action = "_self." + $(this).attr("action");eval(action);});},querySelect : function(thi,event){var _self = this;var url = _self.settings.url;var _keys = _self.settings.code;var keyRespField = _self.settings.keyRespField;var id = keyRespField[1];var ids = $("input[name='" + _keys[0] +"']").val();if(url.indexOf("?") != -1) {url = url + "&" + id + "="+ids;}else {url = url + "?" + id + "="+ids;}$Core.UI.openDialog("selwind", url,{title: "列表选择",width: _self.settings.area[0],height: _self.settings.area[1],onClose: function () {}});},echoSelect : function(_data){var _self = this;var data = _data.data,_keys = _self.settings.code,_rkeys = _self.settings.keyRespField,dictName = "",dictCode = _self.settings.dictCode;$Core.DicCache.initDictionary(dictCode,function(dicts){var _dicts = dicts;if(dicts && dicts.data){var dictDatas = dicts.data[dictCode];for(var i=0,len=dictDatas.length; i<len; i++){var item = dictDatas[i];if(data[_keys[0]] == item[_rkeys[1]]){var itemName = item.text;dictName += itemName +",";}}$("span input:text", $("div #" + _keys[0] + "-popSelector")).val(dictName.substr(0,dictName.length-1));}else{$("span input:text", $("div #" + _keys[0] + "-popSelector")).val(dictName);}})},selectResultAfterCallback: function(checkRlt){var _self = this,multi = _self.settings.multi;if(checkRlt.length == 0){$Core.UI.message.warning("选请选择数据!");}if(!multi && checkRlt.length != 1){$Core.UI.message.warning("单选,请选择一条数据!");}var _keys = _self.settings.code,code = "",name = "";if(!_self.settings.multi){code = checkRlt[0]['code'];name = checkRlt[0]['name'];}else{var _code = "",_name = "";for(var i=0,len=dataArr.length; i<len; i++){_code += checkRlt[i]['code'] +",";_name += checkRlt[i]['name'] +",";}code = _code.substring(0,_code.length-1);name = _name.substring(0,_name.length-1);}//给input[name='']:text 赋值address = checkRlt[0]['address'];headPerson = checkRlt[0]['headPerson'];headPersonPhone = checkRlt[0]['headPersonPhone'];customerType = checkRlt[0]['customerType'];$("input[name='address']").val(address);$("input[name='headPerson']").val(headPerson);$("input[name='headPersonPhone']").val(headPersonPhone);/*$("input[name='customerType']").val(customerType);*/$("#customerType").combobox("setValue", customerType);$("input[name='" + _keys[0] + "']:hidden").val(code);$("span input:text", $("div #" + _keys[0] + "-popSelector")).val(name);$(".panel-tool-close").trigger('click');}}	//扩展jquery类方法$.extend({renderSelectorMyf : function(options){return new renderSelectorMy(options);}});
})(jQuery)
debugger;	renderSelector = $.renderSelectorMyf({fieldCode: "gfyId",url: "../../Security/selector/user/PublicServiceUserList.html?s=" + Math.random(),multi: false,code: "gfyId,gfyIdName",keyRespField: "gfyId,id",dictCode: "publicserviceName",area: ['90%','90%']});_self.renderSelectors = [renderSelector];

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/TlHbPMep.shtml

相关文章

简单了解var

下面我会使用几个小例子简单说明var的使用方法和含义。 Var变量&#xff0c;要定义变量&#xff0c;可以使用 var 操作符&#xff08;注意 var 是一个关键字&#xff09;&#xff0c;后跟变量名&#xff08;即标识符&#xff09;也叫创建JavaScript变量是我们在前端里比较常用…

【FinE】在险价值(VaR)计算

导航 VaR模型案例&#xff1a;AAPL历史模拟法参数模型分析法非参数bootstrapMonte-Carlo模拟计算 参考资料 VaR模型 在险价值Value-at-risk的定义为&#xff0c;在一定时期 Δ t \Delta t Δt内&#xff0c;一定的置信水平 1 − α 1-\alpha 1−α下某种资产组合面临的最大损失…

VAR模型

文章目录 一、VAR是什么&#xff1f;1.引入库2.读入数据3.执行程序 总结 一、VAR是什么&#xff1f; 以金融价格为例&#xff0c;传统的时间序列模型比如ARIMA,ARIMA-GARCH等&#xff0c;只分析价格自身的变化&#xff0c;模型的形式为&#xff1a; 其中称为自身的滞后项。 但…

VaR 与 CVaR

VaR, value at risk, 风险价值&#xff0c;表示金融产品在给定置信水平 α \alpha α 下的最大损失。用 X X X 表示该随机波动的金融产品收益&#xff0c; F X ( x ) F_X(x) FX​(x) 为其累计概率分布&#xff0c;则 VAR 的数学表示式为&#xff1a; VaR α ( X ) − inf ⁡…

python实现VaR和CVaR的计算

python实现VaR和CVaR的计算 1.引言2.问题2.1问题描述2.2 问题解析 3. 数据导入与数据预处理4.VaR的计算4.1 参数法4.2 蒙特卡洛法4.3 历史模拟法4.4 不同方法的VaR比较 5.CVaR的计算5.1 CVaR的计算5.2 VaR和CVaR的比较 6.结语7.代码和数据集链接8.参考资料 1.引言 VaR和CVaR的…

【FinE】正态分布和t分布下的CVaR

导航 CVaR and VaRModelnormal distributionstudent t distribution Case StudyReference CVaR and VaR CVaR(Conditional Value-at-Risk)也被称为Expected Shortfall(ES) 或者 Expected Tail Loss(ETL)&#xff0c;可以解释超过给定VaR值的期望损失&#xff0c;在很多风险分析…

条件风险价值CVaR

产生背景 &ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace; \;\;\;\;\;\; CVaR即条件风险价值&#xff0c;是由RockafeUar和Uryasev等于1997年提出的一种较VaR更优的风险计量技术&#xff0c;其含义为在投资组合的损失超过某…

VaR和CVaR举例说明_笔记转载

风险价值VaR成为金融市场风险度量的主流指标 VaR自1993年发展至今已作为金融市场风险度量的主流指标被各银行、投资公司、证券公司及金融监管机构广泛采用。VaR不仅具有概念简单&#xff0c;易于沟通和理解的优点&#xff0c; 而且为不同金融工具构成的复杂的投资组合提供了一…

两个命令行应用程序的交互——使用Java的Process类完成复杂控制台程序的自动化操作(以围棋GTP协议为例)

GitHub地址链接&#xff1a;https://github.com/zhmgczh/GTPService 这个项目其实继承并发展于我的上一个项目——用模式识别实现围棋转接器的开源Java项目——一个类似GTool2.exe的工具&#xff0c;是一个变相的补充&#xff0c;主要解决如何使用Java完成两个控制台应用程序相…

GTP(GPRS Tunnelling Protocol)协议http://blog.csdn.net/stephen_yin/article/details/6951237

GTP&#xff08;GPRS Tunnelling Protocol&#xff09;协议 标签&#xff1a; extensionheaderinternet网络wapxhtml 2011-11-09 10:15 6097人阅读 评论(0) 收藏 举报 GTP&#xff08;GPRS Tunnelling Protocol&#xff09; 协议在 GPRS 骨干网中在GSNs 之间&#xff08;…

GTP(GPRS Tunnelling Protocol)协议

GTP&#xff08;GPRS Tunnelling Protocol&#xff09; 协议在 GPRS 骨干网中在GSNs 之间&#xff08;如 SGSN 和 GGSN&#xff09;提供协议信道&#xff0c;所有的 PTP 分组数据协议的PDUs 应由GTP 协议进行封装。 GTP概述 GTP 协议应用在SGSN 和GGSN 之间&#xff0c;为各…

移动互联网新协议 GTP 中被曝多个高危漏洞,影响4G和5G 用户

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01; 编译&#xff1a;奇安信代码卫士团队 Positive Technologies 公司上周发布报告《2020年 LTE 和5G 网络中的漏洞》指出&#xff0c;移动网络运营商 (MNOs) 使用的当代通信协议中被曝多个高危漏洞&#xff0c;可被用于…

GPRS核心网-GTP-C协议解析

GPRS隧道协议&#xff08;GTP&#xff09;是3GPP标准定义的隧道协议&#xff0c;用于在3G /4G/5G网络中承载通用分组无线服务&#xff08;GPRS&#xff09;。 GTP用于在服务网关&#xff08;S-GW&#xff09;和分组数据网络网关&#xff08;P-GW&#xff09;以及S-GW和移动性管…

网络协议 终章 - GTP 协议:复杂的移动网络

前面都是讲电脑上网的情景&#xff0c;今天我们就来认识下使用最多的移动网络上网场景。 移动网络的发展历程 你一定知道手机上网有 2G、3G、4G 的说法&#xff0c;究竟这都是什么意思呢&#xff1f;有一个通俗的说法就是&#xff1a;用 2G 看 txt&#xff0c;用 3G 看 jpg&…

gtp传输java_一种GTP数据包传输方法、相关装置及存储介质与流程

本申请实施例涉及通信领域,尤其涉及一种GTP数据包传输方法、相关装置及存储介质。 背景技术: 通用分组无线服务隧道协议(General Packet Radio Service Tunnelling Protocol,GTP)是一种用于传输分组数据的通信协议。目前,己使用的GTP协议可被分为通用分组无线服务(General …

GTP协议

GTP协议 (2010-08-27 17:20:54) 转载▼ 标签&#xff1a; 杂谈 分类&#xff1a; 计算机网络 摘要&#xff1a;本文分析GPRS的GSN之间的GTP协议&#xff0c;阐述GTP协议的含义及用法。 关键词&#xff1a;GPRS GTP 协议 一、 引言 在GPRS系统的GSN&#xff08;GPRS Support …

GTP协议格式分析

点击上方↑↑↑蓝字 [ 协议分析与还原 ] 关注我们 “ 分析GTP协议。” 本文对比较枯燥的协议资料进行学习&#xff0c;有需要可继续阅读&#xff0c;找到自己关注的知识点&#xff0c;暂时无需要可直接拉到文末表示阅读结束&#xff0c;让微信记下热爱学习的你的痕迹。 如果说T…

关于GTPv1协议解析

概述&#xff1a; ***&#xff08;简单说一下&#xff0c;不重点讲述啦&#xff09; GPRS 隧道协议 (GTP) 是一种隧道协议&#xff0c;用于 GPRS、UMTS、LTE 和 5G 网络。它分为两个独立的协议&#xff1a;GTP-C 和 GTP-U。GTP-C用于GPRS核心网络中&#xff0c;用于不同网络节…

GTP-U协议总结

1、​参考资料 3gpp TS 29.060 V17.1.0-GPRS Tunnelling Protocol (GTP) TS 29.281 V17.1.0-GPRS Tunnelling Protocol User Plane (GTPv1-U) 2、GTP协议 GTP&#xff08;GPRS隧道协议(GPRSTunnelingProtocol)&#xff09;&#xff0c;可以分解成三种独立的协议&#xff0…

【5G核心网】 GTP协议

GTP 可以提供移动性的功能。 使用 GTP&#xff0c;网络的终端能够在网络中移动位置&#xff0c;各个端点集之间可以建立多个隧道&#xff0c;从而根据业务不同可以提供不同的 Qos&#xff0c;可以隐藏 IP&#xff0c;安全性更高。 1. 定义概念 GTP-U Message: GTP-U&#xff…