进入Javascript—一个不显眼的基数、值和分号
价值有时我想知道Javascript解析引擎如何区分变量的值,如下面的代码。
var x = 'javascript '; / / Javascript
x;
x = 555; / 555
x = NULL;
没有定义
x = true;
这个数字是直接赋值的,因为它没有多样性,数字是数字,但是很难区分英语中的值,因为在编程语言中,英语可以是字符串或参考变量,因此,如何区分变量和字符串就显得尤为重要。编程语言经常使用的字符串必须用引号括起来,以区分变量和字符串。一些语言如java,他们还区分单、双引号和单引号,包括一个字符,而双引号的字符串。但Javascript不区分字符和字符串之间,而是作为字符串,所以单一和Javascript中的双引号之间没有区别。
尽管引号可以用来区分变量和字符串,但这个值也可能是关键字。例如,上面的代码,我把x赋值为null,这些编程语言是如何区分变量和关键字的呢
空= 123;
console.log(空); / /捕获的referenceerror:转让无效的左手边
未定义的= 456;
console.log(定义); / /未定义
在上面,我将null和未定义值分别赋予另一个值。因此,null将错误的值赋给未定义的。虽然它没有出错,但它失败了。可能是null和未定义的,它们是值。变量是找到值。我们说Javascript如何区分变量和关键字,并最终成为Javascript区分变量和值的方法。
分号
在一些js插件中,您通常会看到一行代码如下所示
(函数(){())
…
});
在代码的前面有一个分号,那么分号是作什么用的
我们知道分号的结尾代表一段代码,但问题是Javascript允许你写分号,这似乎是个问题,代码的结尾与否并不是由你来决定而是由程序来决定,但程序不是万能的,它只是一个经常去的规则。但是如果您编写的代码和它的规则不一致,最终结果会有些令人不满意。
下面是用于省略分号的Javascript解析规则
VaR
=
1 + 2
console.log(一) / / 3
Javascript解析器将解析上面的代码。
var = 1 + 2;
console.log(一); / / 3
如果Javascript不将分号添加到2,它将无法解决它。也可以说,如果Javascript不能被解析,解析器会尝试添加一个分号给它。如果它不能被解析,它将报告错误。
var a=10;
var b=5;
var
(A + B)的ToString()。
不是一个函数
它说B不是一个函数,也就是说,上面的代码很可能被解析成下面的代码
var a=10;
var b=5;
var c = a + b(a+b)ToString();
它把()作为函数调用,也可以理解为Javascript解析器来尽可能匹配,但也有少数例外,他们是工作,休息,继续,Javascript解析器的关键词,它将不是内容自身后走线,而是直接在线在你添加一个分号,看看下面的代码
函数测试(){
返回
123;
}
console.log(测试()); / /未定义
它不返回123,即它直接添加分号后面的回报。
回过头来看,为什么插件开发人员在代码的第一行添加分号
因为它是插件,所以其他人使用它是很自然的。关键的问题是,您不知道使用此插件的人是如何编写代码的。太荒谬了。它和我们的代码有什么关系
如果用户的代码影响了我们的代码,它会如何影响代码例如,我们正在编写一段这样的代码
第一个脚本是由用户自己编写的,第二个脚本是引入的插件之一。那么浏览器是如何解析这两个脚本的呢Well, let's take a test.
test.js
VaR
一
zmz.js
(1 + 2)
如果您运行,您将没有发现错误,也就是说,Javascript解析器不会用最后一个文件中的代码来解析,因为前面的文件没有一个额外的标记。
问题不在这里,但是你可能刚刚读了一本关于HTTP的书,所以原始文件可以减少请求的数量,所以21个脚本。
VaR
(1 + 2)
你说它不会出错吗如果我们在插件的开头添加一个分号,它就不会发生了。
VaR
(1 + 2)
所以不要仅仅认为分号只是用来结束某一段代码,它也可以用来隔离代码的某一部分,并画出其他代码的边界。