JS逻辑语句、函数

一、逻辑语句

和c语言的类似有for ;if;do;do-while;while;break;continue;多了for-in语句,用来枚举对象的属性

for (property in expression) statement
for (var propName in window) {
 console.log(propName);
}

注意

  1. ECMAScript 对象的属性没有顺序。因此,通过 for-in 循环输出的属性名的顺序是不可预测的。 具体来讲,所有属性都会被返回⼀次,但返回的先后次序可能会因浏览器⽽异。
  2. 建议在使⽤ for-in 循环之前,先检测确认该对象的值不是 null 或 undefined。
switch语句

switch 语句中使用任何数据类型,无论是字符串,还是对象都没有问题。其次,每个 case 的值不⼀定是常量,可以是变量,甚至是表达式。switch 语句在比较值时使用的是全等操作符,因此不会发⽣类型转换(例如,字符串"10"不等于数值 10)

二、 函数

函数定义的格式
function 函数名称(形式参数列表){
逻辑;
}

  1. 参数的传递
  • 存在默认数组:数组名称:arguments,作用:将实际参数赋值给形式参数
    只传入了⼀个参数,那么为 arguments[1] 设置的值不会反应到命名参数中。这是因为arguments 对象的长度是由传入的参数个数决定的,不是由定义函数时的命名参数的个数决定的。
  • 无论形式参数个数大于还是小于实际参数个数,函数都会被调用
    形式参数个数>实际参数个数 :NaN(没有意义的值)
    形式参数个数<实际参数个数 : 会将实际参数的末尾最后一个值去除,前面的值进行运算
  • ECMAScript 中的所有参数传递的都是值,不可能通过引⽤传递参数,arguments 的值永远与对应命名参数的值保持同步。
  • 在js中定义函数。函数的形式参数不能带数据类型(不能用var来定义)
  • 可以有return语句,采用赋值调用,此外位于 return 语句之后的任何代码都永远不会执⾏。
  1. 函数没有重载
    根据上文所述,ECMAScript 函数不能像传统意义上那样,通过两个定义的签名(接受的参数的类型和数量)不同的方式重载。如果在 ECMAScript 中定义了两个名字相同的函数,后定义的函数会覆盖前⾯的。

  2. 函数的调用
    (1)单独调用add(10,20,30,40) ;
    (2)赋值调用var c = add(10,20) ;

  3. 函数声明(可以先调⽤,后声明)

func2(); // 不会报错
function func2() {
 alert("func2");
}
  1. 函数表达式(只能先声明,后调用)
func1(); // 会报错
var func1 = function () {
 alert("func1");
}

几个代码的输出结果:

(function() {
 console.log(a);   //undefined"	
 var a = "how are you";
 console.log(a);  // "how are you"	
})();
var name = "test1";
(function () {
 console.log("Original name was " + name);   //“Original name was undefined”
 var name = "test2";
 console.log("New name is " + name);   //"New name is test2"
})();
var name = "test1";
(function (name) {
 console.log("Original name was " + name);//"Original name was undefined"	
 var name = "test2";
 console.log("New name is " + name);  // "New name is test2"	
})();
var name = "test1";
(function (name) {
 console.log("Original name was " + name);//"Original name was undefined"
 name = "test2";
 console.log("New name is " + name);// "New name is test2"	
})();
console.log("name is " + name);//"New name is test1"
var name = "test1";
(function () {
 console.log("Original name was " + name);//"Original name was test1"
 name = "test2";
 console.log("New name is " + name);// "New name is test2"	
})();
console.log("name is " + name);//"New name is test2"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值