selector {
//property: value;
}
This sets the property named "//property" to "value". Close enough. (Expressed otherwise: it’s approximately a comment until the next semicolon, barring quoted strings and parentheses.) //selector {
property: value;
}
This is an invalid selector, and so the entire rule is ignored. (Expressed otherwise: it’s approximately a comment until the next opening curly brace’s matching closing curly brace.) /*
// blah
*/
Edit: I mistakenly parsed this as using a dummy selector to hold the comment property, not just putting it inside real selectors.Further because I write a lot of JavaScript too I sometimes make the mistake of putting a // -comment into my CSS which breaks things. And when things break in CSS you usually don't get a clear error-message about it.
It is always difficult to switch between two languages. I would prefer something like JavaScript stylesheets, if that was possible.
Single-line comments have the benefit that it is always clear to the reader which lines are comments. Whereas if you use multi-line comments to comment a large section of code it is no longer clear when reading it whether it is indeed "inside" a comment.
And finally having both types of comments available is useful because you can multi-line-comment a section which already contains // -comments, whereas you can not multi-line comment a section which already contains multi-line comments.
// => ////
//////////////////////////////////////////////////////////////
// just like those devs that like to decorate their code with
//////////////////////////////////////////////////////////////
/*
* type of stuff
*/
Edit: almost forgot my shell friends
########################
## works too
########################
But what about the below, does it work in your language? I assume it may work in some languages but not all.
/*
let a = 1;
/* a is one */
let b = 2;
*/
Personally, I don't like the /**/ style comments either. I was just playing devil's advocate.
{
"//": "lets us consume uncompiled protobufs (see issue #123)",
"extern": "protobuf.js"
}My impression is this form might actually be the original way of expressing network paths, what with UNC in Windows (\\server\share\file etc.) and POSIX carving out an exception specifically for two slashes at the beginning of a pathname (that is, foo//bar is the same as foo/bar and ///foo/bar is the same as /foo/bar, but //foo/bar may or may not be the same as /foo/bar).
[1] https://datatracker.ietf.org/doc/html/rfc3986#section-4.2