首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jQuery变量阴影

jQuery 变量阴影 (Variable Shadowing) 是指在 JavaScript 代码中使用相同名称的变量,但在不同的作用域中,这些变量的值是不同的。

在 jQuery 中,变量阴影可以用来传递数据,例如在函数和对象中使用相同名称的变量,但是它们的值是不同的。例如:

代码语言:javascript
复制
var obj1 = {
  name: "John",
  sayHello: function() {
    var name = "John";
    console.log("Hello, " + name);
  }
};

var obj2 = {
  name: "Jane",
  sayHello: function() {
    var name = "Jane";
    console.log("Hello, " + name);
  }
};

obj1.sayHello(); // Output: Hello, John
obj2.sayHello(); // Output: Hello, Jane

在上面的例子中,name 变量在两个对象中声明,但是它们的值是不同的。这就是变量阴影的示例。

变量阴影在软件开发中是非常有用的,因为它可以帮助程序员在代码中传递数据,而不会导致混淆或错误。此外,变量阴影还可以用于在函数和对象中创建私有变量,以保护数据的完整性和安全性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Unity3D性能优化总结[通俗易懂]

    一、程序方面   01、务必删除脚本中为空或不须要的默认方法;   02、仅仅在一个脚本中使用OnGUI方法。   03、避免在OnGUI中对变量、方法进行更新、赋值,输出变量建议在Update内。   04、同一脚本中频繁使用的变量建议声明其为全局变量,脚本之间频繁调用的变量或方法建议声明为全局静态变量或方法;   05、不要去频繁获取组件,将其声明为全局变量。   06、数组、集合类元素优先使用Array,其次是List;   07、脚本在不使用时脚本禁用之,须要时再启用;   08、能够使用Ray来取代OnMouseXXX类方法。   09、须要隐藏/显示或实例化来回切换的对象,尽量不要使用SetActiveRecursively或active,而使用将对象远远移出相机范围和移回原位的做法。   10、尽量少用模运算和除法运算,比方a/5f,一定要写成a*0.2f。   11、对于不常常调用或更改的变量或方法建议使用Coroutines & Yield;   12、尽量直接声明脚本变量。而不使用GetComponent来获取脚本; iPhone   13、尽量使用整数数字。由于iPhone的浮点数计算能力非常差;   14、不要使用原生的GUI方法。   15、不要实例化(Instantiate)对象,事先建好对象池。并使用Translate“生成”对象; 二、模型方面   01、合并使用同贴图的材质球。合并使用同样材质球的Mesh;   02、角色的贴图和材质球仅仅要一个。若必须多个则将模型离分离为多个部分。   02、骨骼系统不要使用太多。   03、当使用多角色时,将动画单独分离出来;   04、使用层距离来控制模型的显示距离。   05、阴影事实上包括双方面阴暗和影子,建议使用实时影子时把阴暗效果烘焙出来。不要使用灯光来调节光线阴暗。   06、少用像素灯和使用像素灯的Shader;   08、假设硬阴影能够解决这个问题就不要用软阴影。而且使用不影响效果的低分辨率阴影;   08、实时阴影非常耗性能,尽量减小产生阴影的距离;   09、同意的话在大场景中使用线性雾,这样能够使远距离对象或阴影不易察觉,因此能够通过减小相机和阴影距离来提高性能。   10、使用圆滑组来尽量降低模型的面数;   11、项目中假设没有灯光或对象在移动那么就不要使用实时灯光;   12、水面、镜子等实时反射/折射的效果单独放在Water图层中,而且依据事实上时反射/折射的范围来调整。   13、碰撞对效率的影响非常小,但碰撞还是建议使用Box、Sphere碰撞体。   14、建材质球时尽量考虑使用Substance;   15、尽量将全部的实时反射/折射(如水面、镜子、地板等等)都集合成一个面;   16、假反射/折射没有必要使用过大分辨率,一般64*64就能够,不建议超过256*256;   17、须要更改的材质球。建议实例化一个,而不是使用公共的材质球;   18、将不须射线或碰撞事件的对象置于IgnoreRaycast图层;   19、将水面或类似效果置于Water图层   20、将透明通道的对象置于TransparentFX图层;   21、养成良好的标签(Tags)、层次(Hieratchy)和图层(Layer)的条理化习惯,将不同的对象置于不同的标签或图层,三者有效的结合将非常方便的按名称、类别和属性来查找;   22、通过Stats和Profile查看对效率影响最大的方面或对象。或者使用禁用部分模型的方式查看问题究竟在哪儿;   23、使用遮挡剔除(Occlusion Culling)处理大场景。一种较原生的类LOD技术。而且可以“切割”作为总体的一个模型。 三、其他   场景中假设没有使用灯光和像素灯,就不要使使用方法线贴图。由于法线效果仅仅有在有光源(Direct Light/Point Light/Angle Light/Pixel Light)的情况下才有效果。

    02

    Unity Shader常用函数,标签,指令,宏总结(持续更新)

    UnityObjectToClipPos(v.vertex); 最基本的顶点变换,模型空间 ==》裁剪空间 mul(unity_ObjectToWorld, v.vertex); 顶点:模型空间 ==》世界空间,多用于顶点着色器 UnityObjectToWorldNormal(v.normal); 法线:模型空间 ==》世界空间,多用于顶点着色器,float3(归一化后fixed3) UnityWorldSpaceLightDir(i.worldPos.xyz); 仅前向渲染,世界空间顶点位置 ==》世界空间光源方向,多用于片元着色器,一般会顺带归一化(fixed3) UnityWorldSpaceViewDir(i.worldPos.xyz); 世界空间顶点位置 ==》世界空间视线方向,多用于片元着色器,一般会顺带归一化(fixed3) P.S.一般[0,1]范围内的尽量用低精度fixed类型,如单位矢量,颜色等 Tags{"lightmode"="forwardbase"}(字符串不区分大小写,编译时会自动转为所有字母大写) 指示光照模型为前向渲染的基本模式 #include "UnityCG.cginc"(字符串不区分大小写,编译时会自动转为所有字母大写) 包含大量基本内置函数,宏等,一般自带 #include "lighting.cginc"(字符串不区分大小写,编译时会自动转为所有字母大写) 包含基本光照属性,如 _LightColor0 UNITY_LIGHTMODEL_AMBIENT(使用大写) 环境光,一般取前三个分量rgb(xyz);基本光照模型需要有环境光,漫反射,高光等 基本纹理&法线贴图: TRANSFORM_TEX(v.uv, _MainTex); 基本纹理变换,用于顶点着色器,相当于v.uv*_MainTex_ST.xy + _MainTex_ST.zw;(其中xy存缩放,zw存偏移,对应面板参数);_MainTex_ST需额外定义 tex2D(_MainTex, i.uv); 基本纹理采样,用于片元着色器;一般会定义染色属性并与之相乘得到反射率(albedo),反射率作为环境光和漫反射计算的因子 UnpackNormalWithScale(packedNormal, _BumpScale); 反映射法线贴图采样结果得到顶点空间中的法线方向,同时计算凹凸映射的缩放;packedNormal为法线贴图直接采样结果,_BumpScale为凹凸缩放值;法线贴图必须进行导入设置为Normal Map UnityObjectToWorldDir(v.tangent.xyz); 方向(切线):模型空间 ==》世界空间,多用于顶点着色器 cross(worldNormal, worldTangent)*v.tangent.w 计算副法线,cross(,)两个向量叉积,用于得知两个坐标轴求第三个坐标轴朝向,w控制朝向的正负;知道三个朝向就可以构造变换矩阵了 TANGENT_SPACE_ROTATION 得到从模型空间到顶点空间的变换矩阵rotation,随后可直接进行如下计算,例如: mul(rotation, ObjSpaceLightDir(v.vertex)); 模型空间顶点位置 ==》模型空间光源方向==》顶点空间光源方向 mul(rotation, ObjSpaceViewDir(v.vertex)); 模型空间顶点位置 ==》模型空间视线方向==》顶点空间视线方向 多光源&前向渲染&光照衰减: Tags{"lightmode"="forwardbase"}(第一个Pass,全局性通用计算,只计算一次,不用开启混合) Tags{"lightmode"="forwardadd"}(第二个Pass,根据光源数目不同可能多次计算,需开启混合) 前向渲染的两种标签,分别位于不同的两个Pass,指示每个Pass的光照模式 #pragma multi_compile_fwdbase #pragma multi_compile_fwdadd 前向渲染的两种指令,只有每个Pass配置正确指令才可能得到正确的光照变量,如光照衰减值 UNITY_LIGHT_ATTENUATION(atten, i, i.worldPos.xyz); 用于第二个Pass分别计算每个光源的衰减,atten为输出的衰减值,i为片元着色器的输入结构体,其内部数学运算根据各个光照的类型不同复杂度不一,具体可参考:https://github.com/candycat1992/Unity_Shaders_Book/issues/47 接收投影: SHADOW_COORDS(idx) 声明阴影纹理采样的坐标,用于顶点着色器输出结构体,idx为下一个可用插值寄存器(TEXCOORD)的索引值 TRANSFER_SHADOW(o); 用于在顶点着色器

    01

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券