day45の概要

JavaScriptを

  • フロントプログラミング言語の終わり(および論理)があります
  • JavaScriptとJavaの関係:熱こすります
  • JavaScriptは、HTMLページにプログラミングコードであります
  • HTMLページにJavaScriptの後、すべての最新ブラウザの実行により、

ノートと導入方法

  • 注記

    // 单行注释
    
    /*
    多行注释1
    多行注释2
    */
  • 導入のJS方法

    • スクリプトタグ内に直接書く<script> alert(123) </script>jsのコード
    • スクリプトタグのSRC内の外部パラメータの導入によるJSファイル: <script src="我的第一个js文件.js"></script>

言語学習プロセス:変数 - >基本データ型 - >プロセス管理 - >機能 - >オブジェクト指向

JavaScriptで変数

  • JSでの変数は、キーワードを使用する必要が宣言

    • VAR:ステートメントは、ステートメントが世界的に有効である場合はいつでも、 var name = 'jason'

      var i = 5;
      
      for (var i = 0; i < 10; i++) {
          console.log(i)
      }
      
      console.log(i);  // 10, 局部影响全局
    • 聞かせて:(ES6新しい構文)のみ部分的に有効なことができ、 let name = Oscar

      let n = 5;
      
      for (let n = 0; n < 10; n++) {
          console.log(n)
      } 
      
      console.log(n);  // 5, let局部声明只在局部有效, 不会影响全局
  • JS変数の命名名に

    • 数字、文字、アンダースコア、$
    • 指名された推奨されるこぶは、Pythonの名前のアンダースコアを推奨します
    • JSコードのデフォルトはターミネータとしてセミコロン
  • 編集JSコード:クロム - > F12 - >コンソール

    • console.log('hello world') == print

    • 空のは、削除変数と関数を意味するものではありませんが、インタフェースが明確です

    • Pythonは、真の意味で一定でない定数があるJS、真の意味で定義されたCONST定数は、変更できません

      const pi = 3.14;
      
      console.log(pi);  // 3.14
      
      pi = 666;  // 报错, Assignment to constant variable.

JavaScriptのデータ型

バリュークラス

  • NaN(非数)は数値型であるが、意図は数値ではありません

    a = 1;
    typeof a;  // "number"
    
    b = 1.1;
    typeof b  // "number"
    
    h = NaN;
    typeof h;  //"number"
    
    var x = '123';
    var y = '12a';
    var z = 'abc';
    
    parseInt(x)  // 123
    parseInt(y)  // 12
    parseInt(z)  // NaN
    // parseFloat用法相同

文字の種類:

  • 文字列連結:jsが推奨プラス記号スプライシング、Pythonは%sの推奨、プラス非常に低い効率の使用
c = 'jason';  // 不能使用三引号定义
typeof c;  // "string"

var name = '%egon';
var info = 'DSB ';
x = name + info; // "%egonDSB "

name.length;  // 4
info.trim();  // "DSB", == strip()
name.trim('%');  // "%egon", 不能加参数去除指定字符

name.charAt(0);  // "%", 索引取值
name.indexOf('g');  // 2, 根据字母返回索引, "o"要大写, 没有为-1

name.concat('dsb');  // "%egondsb", 字符串拼接

name.substring(1, 4);  // "ego", 索引切片, 顾头不顾尾
name.slice(0, -1);  // "%ego", 索引切片, 与substring区别: slice可以识别负数索引
name.slice(2);  // "gon", 只有一个参数, 表示从参数索引开始取到最后

name.split('o');  // ["%eg", "n"], 将字符串以"o"分割成列表

var text = `
    nick,
    tank,
    jason
`;  // 定义多行文本, ``
var sentence = `
    my name is ${name}
`
sentence;  // my name is %egon, 模板字符串, 需要提前定义变量
  • Pythonのサプリメント

    res = 'jason'
    print(res.isupper())  # False
    print(res.islower())  # True
    # isupper, islower, 判断是否全大小写
    
    # 通常情况下, 如果变量名存的值是布尔值, 那么习惯性使用is_命名变量名, 例如: is_delete

ブール値

  • 真偽
  • すべて小文字ブール値JSで
  • 空の文字列は、0は、ヌルは、未定義、NaNで対応するブール値はfalseです

未定義与未定義

  • ヌル変数が空を表し、ヌル値は、オブジェクトが変数の型になり、値がNULLであるように、手動で変数をクリアすることができます
  • 未定義が宣言された変数の値を表しますが、何の割り当ては、明確な時間関数は、戻り値が定義されていない返しません
t = true;
typeof t;  // "boolean"

g = undefined;
typeof g;  //"undefined"

オブジェクトの配列

  • アレイ:[]

  • typeof演算は(など、+ :!のように)、単項演算子で、それは機能ではなく、ステートメントではありません

  • 記号:データ・タイプは、一意の値を表します。

    var lt = [1, 2, 3];
    typeof lt;  // "object"
    lt[0];  // 1
    lt.length;  // 3
    lt.push(666);  // 4, 往数组中添加值, 返回添加后的数组元素的个数
    lt.pop();  // 666, 获取数组最后一个元素并将其从数组中删除
    lt.unshift(0);  // 4, 从头部插入元素, 返回插入后的数组的元素的个数
    lt.shift();  // 0, 获取数组第一个元素并将其从数组中删除
    lt.join('&');  // "1&2&3", 将数组元素以'&'拼接成字符串
    
    lt.forEach(
      function(element, index, obj_lt){
          console.log(element, index, obj_lt) 
      }
    )  // 1 0 [1, 2, 3], for循环取出每一个元素当做第一个参数传给函数, 第二个参数为元素索引, 第三个参数为元素的来源对象
    
    lt.splice(1, 1, 777)  // [2], 从索引为1的位置开始删除, 一共删除1个元素, 并将777添加到数组中对应的位置
  • Pythonのメソッドは、リストにデータを追加します。

    1. APPEND、尾を追加
    2. インデックスによって挿入、挿入
    3. 内部循環+はappendのために、実際には、リストを展開し、拡張
  • Pythonのリストの削除要素法

    1. 削除、削除、ノーリターン値
    2. 要素のリターンをポップ、ポップ、ポップ
  • 組み込み関数の共通のpythonの後端

    • MAX、

    • 郵便番号、

    • フィルタ、

    • 、functoolsを出しつ以上を削減し、行く:名前のタプル、接続を

    • from functools import wraps:デコ修復ツール

      from functools import reduce
      
      lt = [11, 22, 33, 44, 55]
      
      res = reduce(lambda x, y: x + y, lt)
      print(res)
      
      '''
      1. 循环遍历列表中的每一个元素, 第一次取出两个值当做参数传入函数, 得到函数返回值 
      2. 第二次将第一次得到的函数返回值以及从列表中取出的下一个元素当做参数传入函数,
      3. 重复第二步直到得到最后的函数返回值
      4. 可以在lt后面再加一个参数指定起始位, 那么第一次只从列表中取一个元素
      '''

JavaScriptでの演算子

var x = 10;
var res1 = x++;  
var res2 = ++x;  
res1;  // 10, 先赋值再自增
res2;  // 12, 先自增再赋值

var x1 = 5;
var x2 = '5';
x1 == x2;  // true, 弱等于, 内部自动转换成相同数据类型比较
x1 === x2;  // false, 强等于
// !=, 若不等于; !==, 强不等于

// 逻辑运算符: &&, 与; ||, 或; !, 非

JavaScriptでプロセス制御

裁判官の場合

var age = 28;
undefined
if (age > 30){
    console.log('你是个好人')
}
else if (age > 24){
    console.log('考虑一下')
}
else{
    console.log('嘿嘿嘿')
}
// 考虑一下, 括号内表示判断条件, 大括号内表示条件成立执行的代码块

スイッチ

var today = 2;
switch (today){
    case 1:
        console.log('蹦迪');
        break;
    case 2:
        console.log('喝酒');
        break;
    case 3:
        console.log('学校');
        break;           
}
// 喝酒

forループ

var lt = [11, 22, 33];
for (let i = 0; i < lt.length; i++){
    console.log(lt[i])
}
// 11, 22, 33; 括号内为循环条件, 包括起始条件, 终止条件, 每次循环后的自增动作; 大括号内为每次循环执行的代码块

三項演算子

x = 1;
y = 2;
res = x > y ? 666 : 777;  // 777
// 先写条件, 条件成立执行问号后的语句, 条件不成立执行冒号后的语句

JavaScript関数

function f(a, b){
    if (arguments.length == 2){
        console.log(a, b)
    }
    else if (arguments.length > 2){
        console.log('参数传多了')
    }
    else{
        console.log('参数传少了')
    }
}

f(666, 777)  // 666, 777
f(666, 777, 888)  // 参数传多了
f(666)  // 参数传少了
// arguments, 内置对象, 可以接收所有用户传入的参数, 并以数组形式存放

// 立即执行函数
(
function (a, b){
    console.log(a, b)
}
)(666, 777)
// 666, 777; 相当于匿名函数加括号直接调用

// 箭头函数
var sum = (num1, num2) => num1 + num2;
sum(666, 777);  // 1443
/*
等价于
var sum = function (num1, num2){
    return num1 + num2;
}
*/

JavaScriptが組み込みオブジェクト

  • カスタムオブジェクト

    var user_dic = {'user_name': 'jason', 'user_pwd': 123};
    typeof user_dic;  // "object"
    
    user_dic.user_name  // "jason"
    
    for (let key in user_dic){
        console.log(key, user_dic[key])  // user_dic.key会报错, 因为key取出的是字符串, 而不是变量名
    }
    
    // 标准的创建方式, 定义对象的关键字: new
    var my_object = new Object();  // Object中的O必须要大写
    my_object.user_name = 'tank';
    my_object.user_pwd = 456;
    my_object;  // {user_name: "tank", user_pwd: 456}
    
  • 日付オブジェクト

    var d = new Date();
    console.log(d.toLocaleString());  // 转换成当地时间, 2019/11/17 下午1:35:02
    d;  // 时间对象, Sun Nov 17 2019 13:35:02 GMT+0800 (中国标准时间)
    d.getMonth();  // 10, 月份: 0~11
    d.getDay();  // 0, 星期几: 0~6(星期天~星期六)
    
  • JSONオブジェクト

    var user_dic = {'user_name': 'jason', 'user_pwd': 123};
    var json_dic = JSON.stringify(user_dic);
    json_dic;  // "{"user_name":"jason","user_pwd":123}", 相当于python中的json.dumps
    var user_dic_duplicate = JSON.parse(json_dic);
    user_dic_duplicate;  // {user_name: "jason", user_pwd: 123}, 相当于python中的json.loads
    
  • REG定期的なターゲット

    • REG:定期的に、ASYN:非同期
    • []Inside、および{}スペースなし内
    // 定义正则的两种方式, 推荐使用第二种
    var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");
    var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/;  // 匹配6~10位字符串, 第一位必须为字母, 其他为字母或数字
    
    // 校验
    reg2.test('egondsb');  // true
    
    // 全局匹配, 加字母g(global)
    var reg3 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/g;
    reg3.test('egondsb');  // true
    reg3.lastIndex;  // 7, 一次匹配成功后会记住上一次匹配的位置
    reg3.test('egondsb');  // false
    reg3.lastIndex;  // 0, 匹配不到内容后索引会重置
    
    // test默认传undefined
    reg2.test();  // true
    reg2.test('undefined');  // true
    
  • 3つのモードの定期的な試合のパイソン:

    • マッチが成功した後に(「正規表現」、「文字列が一致する」)re.findall、パケットの優先順位は、試合終了まで継続します
    • re.matchは、成功した試合の終わりである最初の文字から、一致しなければなりません
    • 成功試合終了ですre.search、グローバルマッチング、

おすすめ

転載: www.cnblogs.com/-406454833/p/11879717.html