• JavaScript2


    js的运算符号

    # 算术运算符
    var x = 10;
    var res1 = x++;
    var res2 = ++x;
    res1 10
    res2 12
    ++表示自增1 类似于 +=1
    加号在前先加后赋值 加号在后先赋值后加
    
    # 比较运算符
    1 == '1'  # 弱等于  内部自动转换成相同的数据类型比较了
    true  
    
    1 === '1'  # 强等于  内部不做类型转换
    
    1 != '1'
    false
    1 !== '2'
    true
    
    # 逻辑运算符
    	# python中 and or not
      # 对应js中    && || !
    5 && '5'
    '5'
    
    0 || 1
    1
    
    !5 && '5'
    false
    
    # 赋值运算符
    = += -= *= ....
    

    js的流程控制

    # if判断
    var age = 28;
    # if(条件){条件成立之后指向的代码块}
    if (age>18){
      console.log('来啊 来啊')
    }
    # if-else
    if (age>18){
      console.log('来啊 来啊')
    }else{
      console.log('没钱 滚蛋')
    }
    # if-else if else
    if (age<18){
      console.log("培养一下")
    }else if(age<24){
      console.log('小姐姐你好 我是你的粉丝')
    }else{
      console.log('你是个好人')
    }
    """
    在js中代码是没有缩进的 只不过我们处于python书写习惯人为的加上了而已
    ()条件
    {}代码块
    """
    
    # switch语法
    """
    提前列举好可能出现的条件和解决方式
    """
    var num = 2;
    switch(num){
      case 0:
      	console.log('喝酒');
      	break;  # 不加break 匹配到一个之后 就一直往下执行
      case 1:
      	console.log('唱歌');
      	break;
      case 2:
      	console.log('洗脚');
      	break;
      case 3:
      	console.log('按摩');
      	break;
      case 4:
      	console.log('营养快线');
      	break;
      case 5:
      	console.log('老板慢走 欢迎下次光临');
      	break;
      default:
      	console.log('条件都没有匹配上 默认走的流程')
    }
    
    
    # for循环
    # 打印0-9数字
    for(let i=0;i<10;i++){
      console.log(i)
    }
    # 题目1  循环打印出数组里面的每一个元素
    var l1 = [111,222,333,444,555,666]
    for(let i=0;i<l1.length;i++){
      console.log(l1[i])
    }
    
    # while循环
    var i = 0
    while(i<100){
      console.log(i)
      i++;
    }
    
    # 三元运算符
    # python中三元运算符 res = 1 if 1>2 else 3
    # JS中三元运算  res = 1>2?1:3 
    条件成立取问好后面的1 不成立取冒号后面的3
    var res = 2>5?8:10 # 10
    var res = 2>5?8:(8>5?666:444)  # 666
    """
    三元运算符不要写的过于复杂 
    """
    

    函数

    # 在python定义函数需要用到关键字def
    # 在js中定义函数需要用到关键字function
    
    # 格式
    function 函数名(形参1,形参2,形参3...){函数体代码}
    
    # 无参函数
    function func1(){
      console.log('hello world')
    }
    func1()  # 调用 加括调用 跟python是一样的
    
    # 有参函数
    function func2(a,b){
      console.log(a,b)
    }
    func2(1,2)
    
    func2(1,2,3,4,5,6,7,8,9)  # 多了没关系 只要对应的数据
    VM3610:2 1 2
    undefined
    
    func2(1)  # 少了也没关系
    VM3610:2 1 undefined
      
    # 关键字arguments
    function func2(a,b){
      console.log(arguments)  # 能够获取到函数接受到的所有的参数
      console.log(a,b)
    }
    
    function func2(a,b){
      if(arguments.length<2){
        console.log('传少了')
      }else if (arguments.length>2){
        console.log('传多了')
      }else{
        console.log('正常执行')
      }
    }
    
    
    # 函数的返回值  使用的也是关键字return
    function index(){
      return 666
    }
    function index(){
      return 666,777,888,999
    }
    res = index();
    999
    res
    999  # 只能拿到最后一个
    
    function index(){
      return [666,777,888,999]
    }
    # js不支持解压赋值
    
    
    # 匿名函数  就是没有名字
    function(){
      console.log('哈哈哈')
    }
    var res = function(){
      console.log('哈哈哈')
    }
    
    # 箭头函数(要了解一下)  主要用来处理简单的业务逻辑 类似于python中的匿名函数
    var func1 = v => v;  """箭头左边的是形参 右边的是返回值"""
    等价于
    var func1 = function(v){
      return v
    }
    
    var func2 = (arg1,arg2) => arg1+arg2
    等价于
    var func1 = function(arg1,arg2){
      return arg1+arg2
    }
    

    函数的全局变量与局部变量

    # 跟python查找变量的顺序一致
    var city = "BeiJing";
    function f() {
      var city = "ShangHai";
      function inner(){
        var city = "ShenZhen";
        console.log(city);
      }
      inner();
    }
    
    f();  //输出结果是?
    
    
    var city = "BeiJing";
    function Bar() {
      console.log(city);
    }
    function f() {
      var city = "ShangHai";
      return Bar;
    }
    var ret = f();
    ret();  // 打印结果是?
    
    
    var city = "BeiJing";
    function f(){
        var city = "ShangHai";
        function inner(){
            console.log(city);
        }
        return inner;
    }
    var ret = f();
    ret();
    
    

    词法分析(直接忽略)

    自定义对象

    # 你可以看成是我们python中的字典 但是js中的自定义对象要比python里面的字典操作起来更加的方便
    
    # 创建自定义对象 {}
    """第一种创建自定义对象的方式"""
    var d1 = {'name':'jason','age':18}
    
    
    var d = {'name':'jason','age':18}
    typeof d
    "object"
    
    d['name']
    "jason"
    d.name  # 比python从字典获取值更加的方便
    "jason"
    d.age
    18
    
    for(let i in d){
      console.log(i,d[i])
    }  # 支持for循环 暴露给外界可以直接获取的也是键
    
    
    """第二种创建自定义对象的方式  需要使用关键字 new"""
    var d2 = new Object()  # {}
    
    d2.name = 'jason'
    {name: "jason"}
    
    d2['age'] = 18
    {name: "jason", age: 18}
    

    Date对象

    let d3 = new Date()
    Fri May 15 2020 14:41:06 GMT+0800 (中国标准时间)
       
    d3.toLocaleString()
    "2020/5/15 下午2:41:06"
    
    # 也支持自己手动输入时间
    let d4 = new Date('2200/11/11 11:11:11')
    d4.toLocaleString()
    
    let d5 = new Date(1111,11,11,11,11,11)
    d5.toLocaleString()  # 月份从0开始0-11月
    "1111/12/11 上午11:11:11"
    
    # 时间对象具体方法
    let d6 = new Date();
    d6.getDate()  获取日
    d6.getDay()		获取星期
    d6.getMonth()		获取月份(0-11)
    d6.getFullYear()		获取完整的年份
    d6.getHours()			获取小时
    d6.getMinutes()		获取分钟
    d6.getSeconds()		获取秒
    d6.getMilliseconds()  获取毫秒
    d6.getTime()					时间戳
    

    JSON对象

    """
    在python中序列化反序列化
    	dumps 		序列化
    	loads			反序列化
    
    在js中也有序列化反序列化
    	JSON.stringify()								dumps
    	JSON.parse()										loads			
    """
    let d7 = {'name':'jason','age':18}
    let res666 = JSON.stringify(d7)
    "{"name":"jason","age":18}"
    
    JSON.parse(res666)
    {name: "jason", age: 18}
    

    RegExp对象

    """
    在python中如果需要使用正则 需要借助于re模块
    在js中需要你创建正则对象
    """
    # 第一种 有点麻烦
    let reg1 = new RegExp('^[a-zA-Z][a-zA-Z0-9]{5,11}')
    # 第二种 个人推荐
    let reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/
    
    # 匹配内容
    reg1.test('egondsb')
    reg2.test('egondsb')
    
    # 题目 获取字符串里面所有的字母s
    let sss = 'egondsb dsb dsb'
    sss.match(/s/)  # 拿到一个就停止了
    sss.match(/s/g)	# 全局匹配  g就表示全局模式
    
    sss.match(/s/)
    ["s", index: 5, input: "egondsb dsb dsb", groups: undefined]
    sss.match(/s/g)
    (3) ["s", "s", "s"]
    
    # 全局匹配模式吐槽点
    let reg3 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/g
    reg2.test('egondsb')
    
    reg3.test('egondsb')  # 全局模式有一个lastIndex属性
    true
    reg3.test('egondsb')
    false
    reg3.test('egondsb')
    true
    reg3.test('egondsb')
    false
    
    reg3.lastIndex
    0
    reg3.test('egondsb')
    true
    reg3.lastIndex
    7
    
    # 吐槽点二 
    let reg4 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/
    reg4.test()
    
    reg4.test()  # 什么都不传 默认传的是undefined
    true
    reg4.test()
    true
    
    reg4.test(undefined)
    true
    let reg5 = /undefined/
    undefined
    reg5.test('jason')
    false
    reg5.test()
    true
    
    """
    总结 你在用js书写正则的时候一定要注意上述问题
    一般情况下你后续也不会解除到了
    """
    
  • 相关阅读:
    add custom attribute to standard windows controls
    产生0到1之间均匀分布的一个随机数与随机数序列
    (HDOJ 1002)A + B Problem II
    递推问题系列1幂积序列
    杭电题目分类解答
    (HDOJ 1003)Max Sum
    快排序(递归算法)
    (HDOJ 1004)Let the Balloon Rise
    (HDOJ 1005)Number Sequence
    一个关于去除数组重复元素的问题(C语言实现)
  • 原文地址:https://www.cnblogs.com/bailongcaptain/p/12907202.html
Copyright © 2020-2023  润新知