微软的Javascript代码规范

37、JavaScript编程入门:从执行到代码规范 本博客为JavaScript编程的入门指南,从程序执行流程、安全注意事项到代码设计规范进行了详细讲解。内容涵盖如何编写第一个JavaScript程序、基本数据类型、变量声明与转换、数组与对象操作,以及JSON的使用。通过示例和最佳实践建议,帮助开发者编写更清晰、易维护的代码,为深入学习JavaScript打下坚实基础。 阅读详情

<本方译自http://www.asp.net/ajaxlibrary/act_contribute_codingStandards_Programming.ashx。原文主要针对ASP.net的Ajax 控件工具箱,但多数准则亦普遍适用于javascript编程>

本节的主题是帮助程序员防止一些常见的错误,或者强调一些可以明显提高性能、可维护性或者可支持性的惯例。

5.1  变量声明

所有变量都应该使用var来声明,以减少遍历作用域链(scope chain)的额外开销。除非绝对必要,不要使用全局变量,因为它们查找起来总是最慢的。变量应该被初始化为缺省值或者null。例:

var counter = 0; 

var empty = null; 

建议将所有变量声明都放在函数头部。将变量分组声明以减少脚本的大小。如:

var counter = 0, empty = null;

Javascript没有块作用域的概念;因此定义在函数内部的"if"或"for"块中的变量,可以在该函数内的任意地方访问。因此,对javascript来说是享受不到任何变量延迟定义的好处的。

<译注:

当必须使用全局变量时,可以使用Global Import  模式,将全局变量导入成为局部变量,这样在需要使用原全局变量的时候改为使用导入的局部变量,从而减少了作用域链查找的代价。

在变量分组声明上,Dojo的观点是,只能将逻辑上相关联的一组变量放在一起声明。如果没有逻辑上的关联,则变量必须每个单独成行声明。可读性高于一切。毕竟,这种做法并不会显著提升性能。>

避免使用"with"语句。它不只是降低了代码的可读性,而且对性能亦有损伤。

<译注:在VBA中使用with语句倒是加快性能的方法。此一时,彼一时也。不过此前根本就不知道javascript还支持with语法>

5.2 函数快捷方式

<译注: 不理解何为function shourtcuts。 疑为IE独门绝技?>

Avoid using function shortcuts such as $get within script that must coexist on a page with other scripts, or may do in the future. This is to avoid other scripts reassigning a global shortcut to an alternative function, which may cause your script to fail.
Instead use fully qualified function calls whenever a script may be reused in uncertain or shared circumstances, or for non-global functions use a closure as described in section 3.7.1.

5.3  函数别名

当需要在一个循环中调用某个函数多次时,可以使用函数别名以减少作用域链的查找,例:

function doSomething() {
    var get = getDataByIndex;
    for (var counter = 0; counter < 10000; counter++) {
        var current = get(counter);
        // ...code removed  
   }
} 

注意在使用别名时,函数一定要设计成允许这样使用。比如依赖于"this"的函数可能就不能被成功地通过别名来引用。

5.4  比较和相等

任何时候只要可能,都使用严格相等符号("===")来决定两个值是否相等。这样可以避免隐藏的类型转换,而且确保精度的责任也不由程序员来承担。例:

如果"x"和"y"都有数值型值:

错误: if (x==5 && y != 4)

正确: if (x === 5 && y !== 4)

5.5  Undefined和null

不要在使用undefined和null关键字上摇摆不定,确保任何字段或变量都初始化为确定值或者为null;

this._result = null;

如果不象上面这样声明,意味着_result将是undefined。

当测试一个类实例变量是否有值,或者一个可选参数是否提供给一个函数时,且该变量/参数确定为一个对象是,使用下面的语法:

    if (message) {
        // message was provided and not null  
    } 

5.6  循环和递归

循环和递归都会放大低性能代码的影响力。因此必须从一开始就坚持好的惯例,而且在必要时进行优化。一些好的编程习惯如:

将一些代价昂贵的调用从重复代码中移到外层来。如不变的try/catch块和if-else分支就应该移到外层去。

错误:

    for (var counter = 0; counter < 10000; counter++) {
            try {
                performAction();
            } catch (e) {
                alert('Failure: ' + e);
                break;
            }
        }  

正确:

    try {
        for (var counter = 0; counter < 10000; counter++) {
            performAction();
            }
    } catch (e) {
            alert('Failure: ' + e);
        } 

如果退出条件的计算很昂贵,也将它移出来。

错误:

    try {
        for (var counter = 0; counter < 10000; counter++) {
            performAction();
            }
    } catch (e) {
            alert('Failure: ' + e);
        }  

正确:

var target = document.getElementsByTagName('div').length;
for (var counter = 0; counter < target; counter++) {
    performAction();
} 

在上面的例子中,对函数getElementsByTagName的调用会导致每个迭代时都重新计算DOM树一次。这应该并不是假想中必须完成的行为。如果将这个调用移出循环的话,也要确保performAction调用不会修改循环的集合。

在同一个函数的多个循环中使用同一个循环变量,以避免多次声明同一变量。

错误:

    for (var counter = 0; counter < 10; counter++) {
        performAction();
        };
    for (var counter = 0; counter < 10; counter++) {
        performOtherAction();
        };  


正确:

var counter;
for (counter = 0; counter < 10; counter++) {
    performAction();
    };
for (counter = 0; counter < 10; counter++) {
    performOtherAction();
    };

<译注: 改正后的代码在第一个循环前即声明了变量var counter,并在后面两个循环中都使用同一变量。比错误的例子小了一次声明。注意这个改动能提升的性能十分有限,如果这样做会牺牲代码的可读性/可维护性,则显见得不偿失。>

5.7  DOM操作

5.7.1  批量修改

通过Javascript来操作DOM是十分昂贵的,而且为引起浏览器重新生成文档流。为减少DOM树更新和屏幕重绘次数,应该对DOM进行批量修改,一次更新。

避免拼接HTML到文档元素的innerHTML属性(例如使用 += 操作符),这会在DOM树更新之前就产生一次大的字符串拼接。

5.7.2  循环引用

在DOM元素和Javascript对象之间的循环引用会造成一些老旧的浏览器的内存泄漏。尽管这一问题现在已大为好转,但对internet应用来讲仍然必须仔细考虑。请参见"Understanding and Solving Internet Explorer Leak Patterns"

集成calibre到cadence virtuoso环境中 load: can‘t access file - “/opt/eda/Mentor/lib/calibre.skl“ 项目场景: 设想是将Calibre集成到cadence virtuoso中,但网上的解决办法尝试过在本机上实验都有点问题,因此想记录下来我的解决办法仅供参考。 问题描述: 安装好cadence, calibre之后打开virtuoso,CIW窗口显示 *Error* load: can't access file - "/opt/eda/Mentor/lib/calibre.skl" 问题是出在calibre.skl的加载路径出错,尝试网上的在工程目录下修改.cdsinit文件,添加calibre安装 阅读详情

相关推荐

433MHz无线通信

基本概念 工作频率:433.92MHz 调制方式:ASK/OOK,FSK,GFSK 现有遥控与接收器方案中,多数使用ASK/OOK调试方式。ASK即“幅移键控”又称为“振幅键控”,也有称为“开关键控”(通断键控)的,所以又记作OOK(On-Off keyed)信号。ASK是一种相对简单的调制方式。幅移键控(ASK)相当于模拟信号中的调幅,不同的是与载频信号相乘的是二进制数码。幅移就是把频...

沧海孤叶的博客 5万+

结对编程2 微软学术搜索 第二部分 项目开发的不足

微软学术搜索 第二部分 项目开发的不足 我作为微软学术搜索长时间来的用户,虽然使用频率不高,但学术搜索确实帮我解决了很多问题。在阅读了邹老师关于微软学术搜索项目的历程介绍之后,我综合分析得到以下几点问题: 1. 前台代码规范问题 根据邹欣老师教程,结合本人日常开发的总结,我认为微软学术搜索在前台开发上存在如下几个问题: 1.1 JQuery代码与前台代码混用问题 查看首页(http://...

weixin_30915951的博客 183

ComfyUI+minimaxh3本地部署:漫剧分镜批量生成工作流全实操

视频生成模型正从云端API向本地化部署迁移,背后的技术逻辑是将扩散模型的文本编码、潜空间采样、VAE解码等阶段拆分为可编排的独立环节。ComfyUI作为节点化管线工具,恰好能以可视化连线方式管理这些阶段,让生成过程可控、可复用、可批量执行。minimaxh3模型支持本地推理,配合LoRA微调与参数优化,能够在保证角色一致性的前提下,从分镜脚本批量产出连续剧情片段,规避云端排队、成本高、素材不可控等工程问题。这套工作流广泛应用于漫剧、短剧和动态条漫的工业化生产,尤其适合需要高频迭代分镜草稿的内容团队。文本以零

weixin_29057065的博客 365

对杂乱的JS代码进行规范的整理格式化

  原贴:http://www.1j3k.cn/js-format.html对杂乱的JS代码进行规范的整理格式化格式化, 压缩. 经典, 微软.www.1j3k.cn/js-format.html - 网页快照 - 类似结果 

最实用的Linux博客 6872

告别regsvr32!易语言调用大漠插件dm.dll的免注册实战(附Win7/10/11避坑指南)

本文详细介绍了易语言如何免注册调用大漠插件dm.dll的实战方法,通过`dmreg.dll`实现真正的免注册调用,规避了传统`regsvr32`注册方式带来的权限和兼容性问题。文章包含核心原理剖析、易语言实现细节、多系统兼容性方案及高级应用场景,帮助开发者实现绿色化部署,提升自动化脚本开发效率。

weixin_42553471的博客 303

【RF】Receiver Function接收函数:从理论到实践的深度解析

本文深入解析地震学中的接收函数(Receiver Function, RF)技术,从理论原理到实践操作。文章将RF比作地球的“听诊器”,详细阐述了其通过反褶积剥离震源影响、揭示地下结构(如莫霍面)的核心机制,并提供了使用Python和rf库进行数据处理、计算、动校正与叠加的完整实战流程,同时探讨了其应用、局限性与常见问题的解决方案。

Jerry的专栏 121

Java与JavaScript之间的借鉴

JavaScript是动态语言,即运行时指定数据类型,在运行前无法保证代码语法的正确性,比如开发中无意拼写错误了变量名以及不存在的函数以及不存在的对象属性等非常影响开发效率和调试bug问题,以及影响代码的逻辑规范等,这也就使得成为了一种诟病,庆幸的是有微软的typescript的支持,能够解决在编译运行前进行类型检查。之前我有过Java和c#项目开发,Java、C#是静态语言,可以在编译前进行类型静态检查,开发中能保证代码语法的正确性,TypeScript设计者的灵感便是来源于此。 正是由于JavaScri

wangteng4154的博客 1569

CRMEB小程序订阅消息实战指南:PHP配置与疑难排查

本文提供CRMEB小程序订阅消息的完整实战指南,重点解析PHP环境下的配置流程与常见错误解决方法。文章从订阅消息的核心规则讲起,详细拆解了从微信后台获取模板到CRMEB后台完成字段映射的关键步骤,并提供了从用户授权、缓存清除到服务器日志检查的逐层排查方案,帮助开发者高效打通消息通道,避免常见配置陷阱。

weixin_29022115的博客 320

【前端代码规范】

因为近期在做一个新的Vue3项目,然后在csdn上都是付费才可,所以我就参考一些文献自己做了一份供大家参考

Clover ‘s Blog 1893

USLE模型(1.2):LS因子的计算

基于USLE的甘南川西北土壤侵蚀研究。准备好30米分辨率的dem。

所有专家都曾始于新手 3481

对称式目镜设计实例

对称式目镜设计实例

weixin_72050316的博客 1163

小团队的前端代码规范

前端代码规范 文章目录前端代码规范1 前言2 命名规范1) 项目命名2 )目录命名3)`javaScript` 文件命名4)`CSS`,`less`文件命名5)HTML文件命名6) 如果使用`Vue`或者`React`技术栈,组件`Component`命名3 HTML1) 语法2) HTML5 doctype3) lang属性4) 字符编码5) IE兼容模式6) 引入CSS, JS7) 属性顺序8...

非著名程序猿 1238

YOLOv13改进策略【Neck篇】| GSConv 轻量卷积,Slim-Neck 减参数还不掉点

Neck 篇的第二篇继续"替换式"改进,这次的对象是 Neck 里的下采样卷积。GSConv 出自《Slim-neck by GSConv: a better design of lightweight detector》(2022),它的出发点:DWSConv(深度可分离)轻但"信息混不进通道",标准卷积重但表达好——GSConv 用GConv(分组卷积)混通道 + DWConv 补空间 + Channel Shuffle 打散,两全其美。

qq_53329130的博客 30

microsoft ajax minifier 4.0,微软Ajax Minifier

Ajax Minifier可以对对javascript和css进行瘦身处理,减少网络流量,提高网页的下载速度。微软 AJAX Minifier可以让你提高你的Ajax应用程序的性能,减少级联样式表和JavaScript文件的大小。微软Ajax Minifier支持去除不必要的空格,注释,分号和大括号,缩短局部变量的名称,并删除不必要的代码。Ajax Minifier安装:默认安装在C:\Prog...

weixin_29238147的博客 335

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

用Microsoft Ajax Minifier技术高效率压缩Js文件

现在越来越多的 WordPress Themes使用了jQuery,已及其它使用了Js的插件,这些Js文件通常位于之前。我们知道网页加载的顺序是从上到下,从左到右,如果头部需加载的文件过多过大的话,会严重影响网页打开的时间。毕竟中国的网络环境还不成熟,所以要有一个折衷的方法来尽量缩小文件尤其是Js文件的大小。 微软曾出品了一款叫Microsoft Ajax Minifier的Js压缩工具

ddxkjddx的专栏 1597

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

代码规范

1、命名规则 1.1 项目命名 全部采用小写方式, 以中划线分隔。 例:my-project-name 1.2 目录命名 a、全部采用驼峰大小写命名,首字母小写; b、采用小写方式, 以下划线分隔; 有复数结构时,要采用复数命名法。 例:scripts, styles, images, dataModels,data_models 1.3 JS文件命名 全部采用驼峰大小写命名,...

dev_周的专栏 272

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

前端代码规范小记

前端代码规范 多人协作开发过程中的代码规范就显得尤为重要,并不是说统一之后规范一定就比规范外的语言规范就要好,目的是多人合作开发中统一了规范,代码风格趋向统一。这样在维护项目代码的时候,与别人交接项目后减少沟通和时间成本。 前言 语言规范除了口头约定,可以借助工具来完成约束。工具可以是编辑器层的也可以是代码层的。下面我的阐述我写的语言规范会在在约定中尽量写到我是怎么遵守这些约定,有没有借助工具来实...

人在路上走 466

崭露头角的typeScript

TypeScript 是 JavaScript 的超集。从这张图我们可以看出,今年最热门的还是Es6,同时TypeScript也深受很多人的喜爱。另一方面,这门语言是由微软和谷歌这两大公司在背后支持。因此在未来一段时间内,TypeScript也有可能成为前端开发语言的主流。   TypeScript的介绍 首先,typescript是微软开发的一门编程语言,是JavaScript的...

xieyixiao_123的博客 271

typescript 学习(1)

typescript 介绍: TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准。 TypeScript 由微软开发的自由和开源的编程语言。 TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上。 JavaScript 与 TypeScript 的区别 TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 Java

m0_37856464的博客 170

边学边总结的前端笔记(JavaScript基础篇)

「学习笔记」JavaScript基础 前言 最近一直研究JavaScript内容,遂把这一阶段的学习内容整理成笔记,巩固所学知识,同时也会参考一些博客,书籍上的内容,查漏补缺,给自己充充电???????? 文章内容如有错误,欢迎指正批评✔️✔️ 工欲善其事,必先利其器,为了提高开发效率,选用VScode。 管理-设置-常用设置-字体Consolas, '微软雅黑 Light', monospace Chinese汉化Vscode Prettier格式化代码(缩进2格)

webxh6的博客 9208

html命名规范_腾讯AlloyTeam:坚持既定代码规范

原作者:AlloyTeam来源:github_Code:AlloyTeam/CodeGuide来源:Alloyteam代码规范,Alloyteam的编译器配置命名规则项目与(JS,CSS,SCSS,HTML)文件命名全部小写,下划线分隔。目录命名小写、下划线,有复数结构时要用复数。HTML语法缩进用 soft tab(4个空格);嵌套用缩进;属性用双引号;属性名全小写,用中划线隔开;不要在自动闭合...

weixin_29913663的博客 272

TypeScript-Node-Starter:微软官方TypeScript Node.js入门指南

TypeScript-Node-Starter:微软官方TypeScript Node.js入门指南 【免费下载链接】TypeScript-Node-Starter A reference example for TypeScript and Node with a detailed README describing ...

gitblog_00742的博客 370

JavaScript VScode

VScode(Visual Studio Code)是微软开发的一款免费、开源的代码编辑器,支持多种编程语言,包括 JavaScript。它内置了智能感知(IntelliSense)、调试和代码格式化等功能,非常适合 JavaScript 开发。VScode 是 JavaScript 开发的理想工具,内置功能如 IntelliSense 和调试开箱即用,结合扩展如 ESLint 和 Live Server 可进一步提升效率。设置包括安装 VScode 和 Node.js,创建项目并配置。

likuoelie的博客 1323

这是Linus最忍不了的一集——虚幻引擎代码规范禁止使用脏话、禁止slave、master

更容易给看到代码的人,造成“黑 = 不好,白 = 好”的印象,而且,“black”也常常和“slave”联系在一起,提醒人们此前长时间存在的种族不平等。比如,2008年,开源软件 Drupal 在社区发布消息,高调站队,将“master/slave”重命名为“client/server”,并解释称,在有更好的替代方案可用时,继续使用潜在的、冒犯性术语通常是不受欢迎的。其实倡议者们想表达的,并不是不能使用“黑”这个词,而是希望不要把“黑”作为“白”的对立面,表达“不好”、“坏”、“需要被限制”等负面意思。

IT界那些事儿 4498

ajax vs2013,将Microsoft Ajax Minifier集成到VS2013对JS、CSS进行编译时压缩

在网站发布中,一般要将js,css文件压缩减少体积,以减少在HTTP请求中的流量。将Microsoft Ajax Minifier集成到VS2013中就可以对JS、CSS进行编译时压缩。VS2013的集成方法:Microsoft Ajax Minifier下载地址:http://ajaxmin.codeplex.com/下载安装后,按照如下步骤集成到VS20131、在web项目上右键,点击卸载项目...

weixin_39849418的博客 448

结对作业 微软学术搜索分析

殷鹏程 10061130 姚铭 10061204 选题:微软学术搜索 第一部分——关于微软学术搜索网站的Functional Bugs 1.Academic Map鼠标滚轮缩放失效问题 Symptom:正常使用Academic Map的缩放功能时,缩放操作可以同时通过拖动页面右上角滑块与滚动鼠标滚轮实现(后者符合大多数用户习惯),但在Academic Map...

824
上一篇: Nginx配置文件解析
下一篇: Dojo Style Guide
yaaron
博客等级 码龄19年 7粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值