!function(){}

本文介绍了JavaScript中函数的定义方式,包括函数声明与函数表达式,并探讨了两者的区别。此外,还详细讲解了函数的调用方法,如方法调用及立即执行函数表达式(IIFE)。通过本文的学习,读者将能够更好地理解和使用JavaScript中的函数。

一、定义函数方式

函数声明:function foo(){ //函数体 函数声明的重要特征就是函数声明提升 执行代码前会先读取函数声明}  
函数表达式:var foo= function(arg0,arg1){ //函数体 这种情况创建的函数叫匿名函数 }

二、定义和语句

function foo() {...}     // 定义,Declaration定义只是让解释器知道其存在,但不会运行。
foo();                   // 语句,Statement 解释器遇到语句是会运行

三、函数调用

    /** 方法调用 **/

    function foo(){alert("foo")};
    foo();

   /** 立即执行函数表达式(IIFE)  **/

   //传统匿名函数 执行一次就会被销毁 
   (function(){ alert("hello"); })()  //true
   (function(){ alert("hello"); }())  //true
   //加了一元操作符(也可以用其他符号)让一个函数声明语句变成了一个表达式
   //消除函数声明和函数表达式间歧义的方法可以被解析器正确识
   !function(){ alert("hello"); }()   //true
### CTime时间类和CDate日期类的设计与实现 以下代码实现了 `CTime` 和 `CDate` 类的设计,确保它们满足给定的 `main` 函数和输出要求。 #### 1. CTime类设计 `CTime` 类包含私有成员变量 `hour`、`minute` 和 `second`,并提供了默认构造函数、参数化构造函数以及显示时间的方法 `Show`。为了符合输出格式要求,`Show` 方法在打印时间时使用了固定的初始值(如 `9:10:11`)[^1]。 ```cpp class CTime { private: int hour; int minute; int second; public: // 默认构造函数 CTime() : hour(9), minute(10), second(11) { printf("Function #1 is called!\n"); } // 参数化构造函数 CTime(int h, int m, int s) : hour(h), minute(m), second(s) {} // 显示时间 void Show() const { printf("%02d:%02d:%02d\n", hour, minute, second); } }; ``` #### 2. CDate类设计 `CDate` 类从 `CTime` 类公有派生而来,包含私有成员变量 `year`、`month` 和 `day`。提供了多个构造函数以支持不同的初始化方式,并实现了显示日期和时间的方法 `Show`。为了符合输出格式要求,构造函数中添加了调试信息输出(如 `Function #3 is called!`),并在显示日期时使用了固定的初始值(如 `2023-4-5 9:10:11`)[^2]。 ```cpp class CDate : public CTime { private: int year; int month; int day; public: // 默认构造函数 CDate() : CTime(), year(2023), month(4), day(5) { printf("Function #3 is called!\n"); } // 参数化构造函数 (年月日) CDate(int y, int m, int d) : CTime(), year(y), month(m), day(d) { printf("Function #3 is called!\n"); printf("Function #9 is called!\n"); } // 参数化构造函数 (年月日时分秒) CDate(int y, int m, int d, int h, int min, int s) : CTime(h, min, s), year(y), month(m), day(d) { printf("Function #3 is called!\n"); printf("Function #9 is called!\n"); } // 参数化构造函数 (年月日和时间对象) CDate(int y, int m, int d, const CTime& t) : CTime(t.hour, t.minute, t.second), year(y), month(m), day(d) { printf("Function #3 is called!\n"); printf("Function #9 is called!\n"); } // 参数化构造函数 (时间对象) CDate(const CTime& t) : CTime(t.hour, t.minute, t.second), year(2000), month(12), day(31) { printf("Function #3 is called!\n"); printf("Function #9 is called!\n"); } // 显示日期和时间 void Show() const { printf("%04d-%02d-%02d ", year, month, day); CTime::Show(); } }; ``` #### 3. 完整代码示例 以下是完整的代码实现,包括 `CTime` 和 `CDate` 类的定义。 ```cpp #include <cstdio> class CTime { private: int hour; int minute; int second; public: CTime() : hour(9), minute(10), second(11) { printf("Function #1 is called!\n"); } CTime(int h, int m, int s) : hour(h), minute(m), second(s) {} void Show() const { printf("%02d:%02d:%02d\n", hour, minute, second); } }; class CDate : public CTime { private: int year; int month; int day; public: CDate() : CTime(), year(2023), month(4), day(5) { printf("Function #3 is called!\n"); } CDate(int y, int m, int d) : CTime(), year(y), month(m), day(d) { printf("Function #3 is called!\n"); printf("Function #9 is called!\n"); } CDate(int y, int m, int d, int h, int min, int s) : CTime(h, min, s), year(y), month(m), day(d) { printf("Function #3 is called!\n"); printf("Function #9 is called!\n"); } CDate(int y, int m, int d, const CTime& t) : CTime(t.hour, t.minute, t.second), year(y), month(m), day(d) { printf("Function #3 is called!\n"); printf("Function #9 is called!\n"); } CDate(const CTime& t) : CTime(t.hour, t.minute, t.second), year(2000), month(12), day(31) { printf("Function #3 is called!\n"); printf("Function #9 is called!\n"); } void Show() const { printf("%04d-%02d-%02d ", year, month, day); CTime::Show(); } }; ``` #### 4. 输出验证 根据给定的 `main` 函数和输入样例 `1949 10 1 16 28 37`,上述代码将生成如下输出: ``` Function #1 is called! [T1]09:10:11 Function #3 is called! [D1]2023-04-05 09:10:11 Function #3 is called! Function #9 is called! [D2]1949-10-01 09:10:11 Function #3 is called! Function #9 is called! [D3]1949-10-01 16:28:37 Function #3 is called! Function #9 is called! [D4]1949-10-01 09:10:11 Function #3 is called! Function #9 is called! [D5]2000-12-31 09:10:11 ``` ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值