我是JS中"就近声明"以及"允许多次var声明"的拥护者。
我持这样观点源自我对易读性的追求。
看一段代码:
function aFunc() {
for(var i = 0; i < 100; i++) {
doSth(i);
function shuffle(array){ | |
for(var i = array.length-1; i > 0; i--) { | |
var rnd = Math.floor(Math.random() * (i+1)); | |
var tmp = array[i]; | |
array[i] = array[rnd]; | |
array[rnd] = tmp; | |
} | |
} | |
function isInOrder(array) { | |
for(var i = 0; i < array.length-1; i++) |
<div> | |
<a href="{{protocol}}//{{host}}{{pathname}}">{{protocol}}//{{host}}{{pathname}}</a> | |
</div> | |
<script> | |
function Template(node) { | |
var prototype = document.createDocumentFragment(); | |
prototype.appendChild(node); |
<body> | |
<style> | |
.number { | |
color:purple; | |
} | |
.keyword { | |
color:blue; | |
} | |
.string { |
//Chrome上能用的 | |
["Image", "Audio", "MediaController", "TrackEvent", "Option", "PopStateEvent", "HashChangeEvent", "PageTransitionEvent", "Event", "CustomEvent", "MutationObserver", "Document", "FormData", "XMLHttpRequest", "FormData", "IDBVersionChangeEvent", "StorageEvent", "RTCSessionDescription", "RTCIceCandidate", "MediaStreamEvent", "Notification", "Blob", "FileReader", "ErrorEvent", "Worker", "SharedWorker", "TransitionEvent"] | |
//标准里有但是还不能用的 | |
["RelatedEvent", "DragEvent", "AnonXMLHttpRequest", "RTCPeerConnection", "RTCPeerConnectionIceEvent", "DataChannelEvent", "ClipboardEvent", "FileReaderSync", "BlobBuilder", "FileSaver", "ParGroup", "SeqGroup", "Animation", "PseudoElementReference", "KeyframeAnimationEffect", "PathAnimationEffect", "TimingEvent", "AnimationEvent"] |
function run(code,callback){ | |
callback = callback || function(r){ | |
//console.log(r); | |
}; | |
function check(f){ | |
if(f instanceof Function) { |
我是JS中"就近声明"以及"允许多次var声明"的拥护者。
我持这样观点源自我对易读性的追求。
看一段代码:
function aFunc() {
for(var i = 0; i < 100; i++) {
doSth(i);
[ | |
{ | |
name:"HTML5", | |
uri:"http://www.w3.org/TR/html5/single-page.html", | |
category:"markup" | |
}, | |
{ | |
name:"HTML 5.1", | |
uri:"http://www.w3.org/TR/html51/single-page.html", | |
category:"markup" |
[ | |
{ | |
"spec name": "CSS Animations", | |
"uri": "http://www.w3.org/TR/css3-animations", | |
"category": "css-property", | |
"Name": "animation-name", | |
"Value": "<single-animation-name> [\n ‘,’ <single-animation-name> ]*", | |
"Initial": "‘none’", | |
"Applies To": "all elements, ::before and ::after pseudo-elements", | |
"Inherited": "no", |
function StartTagToken(){ | |
} | |
function EndTagToken(){ | |
} | |
function Attribute(){ | |
} | |
function randomColor(){ | |
return "rgb("+Math.floor(Math.random()*255)+","+Math.floor(Math.random()*255)+","+Math.floor(Math.random()*255)+")"; | |
} | |
function showBoxes(window) { | |
var rects = []; | |
function getRects(node){ | |
var range = window.document.createRange(); | |
range.setStartBefore(node); | |
range.setEndAfter(node); |