python第13周

一、js内置的数据类型有哪些?

  • Number

      即数字,包括整数、浮点数和0;(正数、负数);
      NaN是一个特殊的数字类型,即不是数字的数字,一般出现NaN可能是运算的数值类型有问题;
      
      let a = 100
      console.log(undefine + 5)
    
  • String

      字符串:字符串的值必须用引号(单双均可,必须成对)扩起来。
    
      let a = 'abc'
    
  • Boolean

      布尔值(真 / 假): true/false 是 JS 里的特殊关键字,无需引号。
      
      let a = true
      console.log(true == 1);		//true
      console.log(true === 1);		//false
      console.log(false == 0);		//true
      console.log(false === 0);		//false
    
  • Array

      数组,是一个容器,顺序表,有索引,有长度;
    
      let a = [1,3,5,2,4,6]
    
  • Object

      JS中一切皆对象,对象拥有自己的属性、方法;一般分为内建对象和自定义对象;
    
      自定义对象定义方式:
      obj = {
          a: 1,
          b: 'abc',
          c: function () {
              console.log('test');
          },
          d: [1, 2, 3]
      }
    
  • Symbol

  • undefine

      变量声明未赋值的;对象未定义的属性
    
      var a,b,c
      console.log(a,b,c)
    
  • null

      类似于python中的none
    

二、箭头函数与普通函数有什么区别?

  • this指针指向,普通函数this指针指向的是global,而箭头函数的指针指向取决于上层环境。

//普通函数this指针指向的是global,但是使用对象.方法调用的时候,有动态方法绑定;
//当调用这个函数,返回一个inner内层函数的时候,此时的内层函数为一个普通函数,无动态方法绑定,所以inner的this指针指向global;

//动态方法绑定
foo = function () {
    console.log(this === global);
    console.log(this)
    
}

let obj = {
    a:1,
    b:2,
    foo
}

obj.foo()
foo = function () {
    function inner(){
        console.log(this === global);
        console.log(this);
               
    }
    return inner
    
}

let obj = {
    a:1,
    b:2,
    foo
}

obj.foo()()	//foo()返回的是inner普通函数(无动态方法绑定),加()调用;

在箭头函数中,this取决于上层环境,所以在对象.方法调函数时,返回的内层普通函数的this,依然是这个对象;(因为上层的环境也就是外层函数有方法绑定)

foo = function () {
     let inner = () => {
        console.log(this === global);
        console.log(this);
               
    }
    return inner
    
}

let obj = {
    a:1,
    b:2,
    foo
}

obj.foo()()
  • arguments:普通函数会将所有参数放入arguments键值对对象中,而箭头函数没有arguments,箭头函数如果需要过去全部参数,则需要使用剩余参数解构;
let foo = function(){
    console.log(arguments);
    
}

foo(1,3,5,[2,4,6])		//返回arguments二元组对象
//箭头函数只能使用剩余参数解构,...args后面不能跟任何参数

let foo = (...args) => {
    console.log(args);
    
}

foo(1,3,5,[2,4,6])		//返回一个大数组把元素都包起来
  • new构造时,普通函数可以作为一个类然后new进行实例的构造,而箭头函数不行;

  • return的使用,普通函数写了return,返回值就是return的值,没有就是return undefine;箭头函数如果只有一条语句且不写{},他的返回值就是执行语句的返回值;如果有{}的情况下return的值就是返回值;

三、列举可能影响this指向的情况

1、在对象.方法调用时,返回一个内层函数,这个函数的this指向的是global;
解决方式:
#、 手动传入需要的数据
#、使用apply或者super来修正this指针
#、内层函数使用箭头函数

四、写一个Promise的例子

	var myPromise = new Promise(
	    (resolve, reject) => {
	        setTimeout(
	            () => {
	                console.log('sucuess')
	                let obj = {
	                    name:'zhangzhongha',
	                    age:27,
	                    sex: 'manle'
	                }
	                resolve(obj)
	            }, 5000
	        )
	    }
	)
	
	async function getrespone(){
	    console.log('11111111111111111111')
	    var respone = await myPromise			//类似于yield,函数等待myPromise,成功以后会返回数据;
	    console.log('22222222222222222222')
	    console.log(respone);						//返回resolve中的值
	    console.log('33333333333333333333');
	    
	}
	
	console.log('44444444444444444444444');
	
	
	getrespone()

执行顺序:

4 (创建myPromise对象,等待5S以后返回成功;并创建异步函数,打印4然后调用)

1(执行getrespone函数,打印1,碰到await,函数停止执行;)

wait myPromise语句成功,myPromise中定义需要打印sucess

2(myPromise返回成功以后,打印2)

respone为resolve的返回值obj对象
3 继续打印3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值