• JavaScript中函数的声明方式、作用域


    1、函数的调用

    函数之家可以相互进行调用

    1. //1-函数可以相互调用
    2. function fn() {
    3. console.log(111);
    4. fn1()//在fn中调用了fn1函数
    5. }
    6. fn();
    7. function fn1() {
    8. console.log(22);
    9. }
    10. fn1()

    案列展示: 根据用户输入年份,输出当年2月份的天数

    1. //案列-根据用户年份输出2月份天数
    2. function backDay() {
    3. var year = prompt('请输入年份:');
    4. if (isRun(year)) {
    5. alert('当前年份是闰年,2月份有29天!')
    6. } else {
    7. alert('当年是平年,2月份有28天!')
    8. }
    9. }
    10. backDay();
    11. function isRun(year) {
    12. var flag = false;
    13. if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
    14. flag = true;
    15. }
    16. return flag
    17. }

    2、函数的两种声明方式

    (1)利用函数关键字自定义函数(命名函数)

    function fn(){

    }

    fn()

    (2)函数表达式(匿名函数

    var 变量名=function(){}

    1. //4.2没有名字的函数
    2. (function () { console.log(123) }
    3. )();//加括号执行
    4. //4.3
    5. (function () {
    6. console.log(345)
    7. }())
    8. + function () {
    9. console.log('thr')
    10. }()
    11. - function () {
    12. console.log(666)
    13. }()
    14. ~function () {
    15. console.log(000)
    16. }()
    17. !function () {
    18. console.log('xxh')
    19. }()

    3、作用域

    1、作用域:代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性,更重要的是为减少命名冲突

    2、js的作用域分为:全局作用域和局部作用域

    3、全局作用域:整个js标签或是一个单独的js文件;

    4、局部作用域:在函数内部就是局部作用域,只在函数内部起效果和作用

    变量作用域

    变量的作用域:

    分为全局变量和局部变量

    注意:

    如果函数内部没有声明变量 var,则用的是全局变量;如果在函数内部里声明了变量则不会使用全局变量;

    1. //作用域【全局变量和局部变量】;局部作用域可以拿到全局作用域的值
    2. var num = 123
    3. function fn() {
    4. var num = 1;
    5. num1 = 123
    6. return num;
    7. }
    8. fn()
    9. var result = fn()
    10. // //全局作用域拿不到局部作用域的值
    11. console.log(result)
    12. console.log(num1)
    13. console.log(num)

    4、预解析

    JavaScript运行分为两步:预解析和代码执行

    1、js中预解析会把js里所有的var 还有function提升到当前作用域的最前面

    2、代码执行,根据书写顺序从上往下执行

    3、预解析分为变量预解析(变量提升)和函数预解析(函数提升)

        (1)变量提升:就是把所有的变量声明提升到当前作用域最前面,不提升复制操纵

        (2)函数提升:把所有函数声明提升到当前作用域最前面,不调用函数。

    1. //案列展示:
    2. f1();
    3. console.log(c);
    4. console.log(b);
    5. console.log(a);
    6. function f1() {
    7. var a = b = c = 9;
    8. console.log(a);
    9. console.log(b);
    10. console.log(c);
    11. }

    5、对象 

    (1)对象定义

    对象是一组无序的相关属性和方法的集合,所有事物都是对象,比如字符串、数值、数组、函数等等

    对象是有方法和属性组成的

    • 属性:事物的特征,在对象中用属性来表示
    • 方法:事物的行为,在对象中用方法来表示

    (2)创建对象的三种方式

    1、对象字面量: {}

      (1)里面属性或方法用键值对的形式  键 属性吗:值 属性值

       (2)多个属性/方法中间用逗号隔开

       (3)方法冒号后面跟的是一个匿名函数

       (4)使用对象:调用对象的属性—对象名.属性名或者是通过对象名['属性名']

                    调用对象的方法:  对象名.方法名()

    1. var obj = {
    2. uname: 'xxh',
    3. age: '18',
    4. sex: '女',
    5. sayHi: function () {
    6. console.log('hello!');
    7. }
    8. }
    9. //调用对象/方法
    10. console.log(obj.uname);
    11. console.log(obj['age']);
    12. obj.sayHi();

     2、通过new object 创建对象

    (1)利用等号=赋值的用法 添加对象的属性和方法

    (2)每个属性和方法之间用分号结束

    调用方法同上

    1. var obj = new Object()//创建一个空对象
    2. obj.uname = 'hhh';
    3. obj.age = 20;
    4. obj.sayHi = function () {
    5. console.log('Hi!!!');
    6. }
    7. console.log(obj.uname);
    8. console.log(obj['age']);
    9. obj.sayHi();

     3、利用构造函数创建

    语法格式:

    function 构造函数名(){

            this.属性=值;

            this.方法=function(){}

    }

    new 构造函数名();

    (1)构造函数名首字母要大写

    (2)构造函数不需要return就可以返回结果

    (3)调用构造函数时必须使用new

    (4)属性和方法前面必须添加this

    1. function Star(uname, age, sex) {
    2. this.name = uname;
    3. this.age = age;
    4. this.sex = sex;
    5. }
    6. var obj = new Star('小he', 20, '女');
    7. console.log(obj.name);
    8. console.log(obj['age']);

     

  • 相关阅读:
    从0到1:云计算工程师入门指南
    Python机器学习预测+回归全家桶,新增TCN,BiTCN,TCN-GRU,BiTCN-BiGRU等组合模型预测...
    C语言实现AES加密算法的示例代码
    【VMware虚拟机中ubuntu系列】—— 在虚拟机中使用本机摄像头的详细教程与常见问题分析及解决
    SQL日常练习3-简单记录5问
    建模示范视频EA-027智慧公寓系统试看片段-视频+图片版
    贪吃蛇身子改进加贪吃蛇向右移动
    【Leetcode】 707. 设计链表
    【Vue】VueCLI 的使用和单文件组件(2)
    《嵌入式虚拟化技术与应用》:深入浅出阐述嵌入式虚拟机原理,实现“小而能”嵌入式虚拟机!
  • 原文地址:https://blog.csdn.net/ywforever/article/details/126545941