Javascript浅谈之表达式和语句的区别
答案:2 悬赏:10 手机版
解决时间 2021-02-21 23:51
- 提问者网友:棒棒糖
- 2021-02-21 17:11
Javascript浅谈之表达式和语句的区别
最佳答案
- 五星知识达人网友:鸠书
- 2021-02-21 17:50
1.表达式(expressions)
表达式是由运算符构成,并运算产生结果的语法结构。每个表达式都会产生一个值,它可以放在任何需要一个值的地方,比如,作为一个函数调用的参数.下面的每行代码都是一个表达式:
var a = (5 + 6) / 2; //表达式:(5 + 6) / 2
var b = (function(){ return 25;})(); //表达式: (function(){ return 25;})()
foo(a*b); //表达式:a*b
2.语句(statements)
语句则是由“;(分号)”分隔的句子或命令。如果在表达式后面加上一个“;”分隔符,这就被称为“表达式语句”。它表明“只有表达式,而没有其他语法元素的语句”。
var a = (5 + 6) / 2; //整行,赋值语句
if(a>12) { statements} //条件语句
var o = {}; //赋值语句
(function(obj){ obj.b = 23;})(o||{}); //表达式语句
一般的javascript中的语句分为下面几种:
(1)声明语句:变量声明和函数声明
(2)赋值语句
(3)控制语句:能够对语句执行顺序产生改变,包括条件语句和循环语句,当然还有比较特殊的标签语句。
(4)表达式语句:这些语句去掉最后分号,都也可当表达式用的。常见的有:对象操作(new、delete)、函数调用(函数执行,必有返回值)等。
var num = 9; //声明、赋值语句
vloop: //标签语句
{ //其实这里大括号可以不需要的,在这里我只想向大家展示一下这种代码块结构而已
for(var i=1; i<10; i++) { //循环语句
if(i==num){ //条件语句
break vloop;
}else{
num = num - 1;
}
}
}
console.log(num); //表达式语句,输出:5
由上面可以看出,表达式和语句还是存在很大区别的,可也说表达式是语句的构成部分,而语句则又可以组成可执行代码块。
表达式是由运算符构成,并运算产生结果的语法结构。每个表达式都会产生一个值,它可以放在任何需要一个值的地方,比如,作为一个函数调用的参数.下面的每行代码都是一个表达式:
var a = (5 + 6) / 2; //表达式:(5 + 6) / 2
var b = (function(){ return 25;})(); //表达式: (function(){ return 25;})()
foo(a*b); //表达式:a*b
2.语句(statements)
语句则是由“;(分号)”分隔的句子或命令。如果在表达式后面加上一个“;”分隔符,这就被称为“表达式语句”。它表明“只有表达式,而没有其他语法元素的语句”。
var a = (5 + 6) / 2; //整行,赋值语句
if(a>12) { statements} //条件语句
var o = {}; //赋值语句
(function(obj){ obj.b = 23;})(o||{}); //表达式语句
一般的javascript中的语句分为下面几种:
(1)声明语句:变量声明和函数声明
(2)赋值语句
(3)控制语句:能够对语句执行顺序产生改变,包括条件语句和循环语句,当然还有比较特殊的标签语句。
(4)表达式语句:这些语句去掉最后分号,都也可当表达式用的。常见的有:对象操作(new、delete)、函数调用(函数执行,必有返回值)等。
var num = 9; //声明、赋值语句
vloop: //标签语句
{ //其实这里大括号可以不需要的,在这里我只想向大家展示一下这种代码块结构而已
for(var i=1; i<10; i++) { //循环语句
if(i==num){ //条件语句
break vloop;
}else{
num = num - 1;
}
}
}
console.log(num); //表达式语句,输出:5
由上面可以看出,表达式和语句还是存在很大区别的,可也说表达式是语句的构成部分,而语句则又可以组成可执行代码块。
全部回答
- 1楼网友:拾荒鲤
- 2021-02-21 19:22
var init = function() { }; 是函数表达式,函数在代码执行的到当前行的时候才被执行,init 才被赋值。
function init() {} 是函数的声明,和 var 一样,会被提前到代码最前面定义。
所以,下面的两个例子:
foo(); // 在函数声明之后调用 foo,可以正常调用。因为 foo 被提前到最前面定义了。
function foo() {
return true;
}
foo(); // 在函数表达式之前调用函数,报错。因为这时候还没有 foo 这个变量。
var foo = function() {
return foo;
};
es5 规定,函数只能在顶级作用域和函数作用域中声明,否则是不合法的。例如:
if( true ) {
// 非顶级和函数作用域内定义函数,是错误的,虽然可能浏览器不一定会抛出错误,但是是不规范的。
function foo() {
return true;
}
}
es6 引入了块级作用域的概念,这种定义方法就被允许了。在块级作用域里面声明的函数,作用域类似于使用 let 声明的变量,在块级作用域之外没有办法被调用。
例如:
{
function foo() {
return true;
}
}
foo(); // 在函数声明的代码块之外调用函数,会抛出错误。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯