js语法

作者: 青春前行 | 来源:发表于2017-08-30 10:51 被阅读0次

1、弱类型
体现再变量的定义上面:统一都使用var 定义变量,然后根据上下文定义来判断并进行转换。
严格地说,var a = 1 与 a = 1,这两条语句的效果不完全一样,主要体现在delete命令无法删除前者。不过,绝大多数情况下,这种差异是可以忽略的。
JavaScript 是一种动态类型语言,也就是说,变量的类型没有限制,可以赋予各种类型的值。
2、变量提升
JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。

console.log(a);
var a = 1;
上面代码首先使用console.log方法,在控制台(console)显示变量a的值。这时变量a还没有声明和赋值,所以这是一种错误的做法,但是实际上不会报错。因为存在变量提升,真正运行的是下面的代码。

var a;
console.log(a);
a = 1;
最后的结果是显示undefined,表示变量a已声明,但还未赋值。

请注意,变量提升只对var命令声明的变量有效,如果一个变量不是用var命令声明的,就不会发生变量提升。

console.log(b);
b = 1;
上面的语句将会报错,提示“ReferenceError: b is not defined”,即变量b未声明,这是因为b不是用var命令声明的,JavaScript引擎不会将其提升,而只是视为对顶层对象的b属性的赋值。

标识符
标识符(identifier)是用来识别具体对象的一个名称。最常见的标识符就是变量名,以及后面要提到的函数名。JavaScript语言的标识符对大小写敏感,所以a和A是两个不同的标识符。

标识符有一套命名规则,不符合规则的就是非法标识符。JavaScript引擎遇到非法标识符,就会报错。

简单说,标识符命名规则如下:

第一个字符,可以是任意Unicode字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_)。
第二个字符及后面的字符,除了Unicode字母、美元符号和下划线,还可以用数字0-9。
下面这些都是合法的标识符。

arg0
_tmp
$elem
π
下面这些则是不合法的标识符。

1a // 第一个字符不能是数字
23 // 同上
*** // 标识符不能包含星号
a+b // 标识符不能包含加号
-d // 标识符不能包含减号或连词线
中文是合法的标识符,可以用作变量名。

var 临时变量 = 1;
JavaScript有一些保留字,不能用作标识符:arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。

另外,还有三个词虽然不是保留字,但是因为具有特别含义,也不应该用作标识符:Infinity、NaN、undefined。
3、js没有块级作用域。
4、break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行。
break语句用于跳出代码块或循环。

var i = 0;

while(i < 100) {
console.log('i当前为:' + i);
i++;
if (i === 10) break;
}
上面代码只会执行10次循环,一旦i等于10,就会跳出循环。
ontinue语句用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环。

var i = 0;

while (i < 100){
i++;
if (i%2 === 0) continue;
console.log('i当前为:' + i);
}
上面代码只有在i为奇数时,才会输出i的值。如果i为偶数,则直接进入下一轮循环。

如果存在多重循环,不带参数的break语句和continue语句都只针对最内层循环。

相关文章

  • JS基础和WebAPIs的关联性

    学习ECMAscript标准规定的基本语法掌握JS基础语法只学习JS基础做不了网页交互效果学习JS基础语法是为了后...

  • react-jsx

    jsx 是类似 js 模板语法 声明 jsx 使用 jsx jsx 语法 jsx 是 js 的语法扩展,在 jsx...

  • 4/07day28_js基础

    day28_js基础 回顾 JS基础语法 JS运算符 JS流程控制语句 条件语句 JS的条件语句和Java语法基本...

  • JSX语法

    在react中,在js文件里写html标签,我们把这种语法称为 jsx语法。 jsx语法与普通js语法的区别 普通...

  • Vue入门(1)

    一、 前置知识 Node.js已安装 HTML语法(MDN) CSS语法(w3school) JS语法(阮一峰)...

  • express+ejs实现最简模板

    //语法就是js。。。

  • jsx语法

    什么是jsx语法 html写在js中而且不用加任何引号. 遇见<>按html语法解析,遇见{ }按js语法解析。 ...

  • react入门(一)

    react.js是核心库,react-dom.js提供与DOM相关功能,Browser是将JSX语法转化为js语法...

  • -----Web APIs-----

    JS学习ECMAScript基础语法是为后面做铺垫,Web APIs才是JS的应用,大量使用JS基础语法做交互效果...

  • React 知识点小结(一):基础

    React:facebook公司的框架。2013年开源的项目。 JSX语法:js语法的扩展。JS + XHTML的...

网友评论

      本文标题:js语法

      本文链接:https://www.haomeiwen.com/subject/swtzdxtx.html