一. JavaScript概述

  ECMAScript和JavaScript的关系

  1996年11月,JavaScript的创造者--Netscape公司,希望这门语言能成为国际化标准,于是决定将JavaScript交个国际标准化组织EMCA.于是有了EMCAScript, 为了保证这门语言的开发性和中立性,还有商标权的原因,所以没有用JavaScript这个名字.

  JavaScript是一种轻量级的编程语言,作者用了10天就写完啦,既能做前端又能做后端,但是有很多的槽点.

  注: ES6就是ECMAScript 6.

  一个完整的JavaScript是由三个不同部分组成的.

  1.核心(ECMAScript)

  2.文档对象模型(DOM) Document object model(整合js, css, html)

  3.浏览器对象模型(BOM)  Broswer object model(整合js和浏览器)

二. JavaScript引入与语言规范

    script标签内些代码

在head标签里面可以写,在body标签里面也可以写,放到head标签里面和放到body标签里面到底有什么区别,我们后续在讲~
<script>
// 在这里写你的JS代码
 //console.log('降龙十八掌') #f12建打开浏览器的调试窗口,然后在console这个调试台就能看到这个内容了
//alert('降龙十八掌') #这个是浏览器窗口一打开咱们这个文件,就弹出一个窗口
</script>

    引入JS文件

// 在head或者body里引入都可以,src后面写的是文件名,如需要可加路径
<script src="myscript.js"></script>

    js文件注释

// 这是单行注释

/*
这是
多行注释
*/

    结束符

JavaScript中的语句要以分号(;)为结束符. 也就是说跟缩进没有关系啦.

三. JavaScript语言基础

  变量声明(直接f12调试调写)

  1. JavaScript的变量名可以使用数字,字母,下划线, $组成, 不能以数字开头.

  2. 声明变量使用 var  变量名 ; 的格式来进行声明

var name = "Alex";
也可以分两步,声明变量var name;然后name='Alex',但是通常我们都是一步写完
var age = 18;

  注意:

    变量名是区分大小写的.

    推荐使用驼峰式命名规则.

    保留字(语言自带的)不能用做变量名.

  槽点来了

    NaN, 表示不是一个数字(Not a Number), 也就是说是一个值,但不是一个数字

parseInt("");  // 返回123, python语言就报错啦
parseInt("ABC"); // 返回NaN,NaN属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。
parseFloat("123.456"); // 返回123.456

  注意: 换到下一行需要用shift + enter.

四. JavaScript数据类型

  字符串(string)

var a = 'Hello';
var b = 'world';
var c = a + b;
console.log(c); // 得到Helloworld 就相当于print

  常用方法:

  

  数组

    数组就类似与python中的列表

var a = [123, "ABC"];
console.log(a[1]); // 输出"ABC"

  常用方法:

  类型查询

typeof "abc"  // "string"
typeof null // "object"
typeof true // "boolean"
typeof 123 typeof NAN // "number"
typeof undefined //undefined

  typeof 是一个一元运算符(就像++, --, !, 等一元运算符,不是一个函数,也不是一个语句)

五. 运算符

  算数运算符

+ - * / % ++ --  i++,是i自加1,i--是i自减1

    比较运算符

>  >=  <  <=  !=  == === !==(强不等于)

  注意:

1 == “1”  // true  #弱等于,将1转换为字符串'1',在=号两个数据类型不同的时候,会自动给你变成相同的,具体怎么一个变换规则,先不用理他,因为这种比较不好,因为以后咱们就尽量用===。
1 === "" // false #强等于,比较类型也比较值

  逻辑运算符

&& || !  #and,or,非(取反)!null返回true

  赋值运算符

= += -= *= /=  #n += 1其实就是n = n + 1

六. 流程控制

  if--else

var a = 10;
if (a > 5){
console.log("yes");
}else {
console.log("no");
}

  多条件判断

var a = 10;
if (a > 5){
console.log("a > 5");
}else if (a < 5) { // 相当于python里面的 elif
console.log("a < 5");
}else {
console.log("a = 5");
}

  while

var i = 0;
while (i < 10) {
console.log(i);
i++;
} // 注意一下格式就行, 还有for循环 和Python都是一样的结构.

  三元运算

var a = 1;
var b = 2;
var c = a > b ? a : b //如果a>b这个条件成立,就把冒号前面的值给c,否则把冒号后面的值给c //python中的:a = x if x>y else y

七.函数

  函数定义

    JS中的函数和python中的基本一样,只是定义的方式有点区别.

// 普通函数定义
function f1() {
console.log('Hello world!');
} // 带参数的就对照python填就可以.
// 注意: 值得注意的是,JS 的返回值正常只能返回一个, 比如return a,b 他只会返回最后一个,
要想返回多个,需要使用数组包裹起来,return [a,b].

   槽点又来了

如果形参有2个,但是你实参传1个或者传5个都不会报错,也就是你不管传多了,还是传少了都不报错.

八. 内置对象和方法

    要注意一点

注意var s1 = "abc"和var s2 = new String("abc")的区别:typeof s1 --> string而 typeof s2 --> Object

// 用new + 内置对象 声明的就是对象

  

  自定义对象

  JS的对象(Object) 本质上是键值对的集合(Hash)结构,但是只能用字符串作为键.

var a = {"name": "Alex", "age": 18};
console.log(a.name);
console.log(a["age"]);

  遍历对象中的内容:

var a = {"name": "Alex", "age": 18};
for (var i in a){
console.log(i, a[i]);
}

  创建对象:

var person=new Object();  // 创建一个person对象
person.name="Alex"; // person对象的name属性
person.age=18; // person对象的age属性

  重点来啦

    RegExp对象(用的比较多) 我们在建立正则表达式的时候要规范,最好加上^ $,为保准确. 

//RegExp对象

//创建正则对象方式1
// 参数1 正则表达式(不能有空格)
// 参数2 匹配模式:常用g(全局匹配;找到所有匹配,而不是在第一个匹配后停止)和i(忽略大小写) // 用户名只能是英文字母、数字和_,并且首字母必须是英文字母。长度最短不能少于6位 最长不能超过12位。 // 创建RegExp对象方式(逗号后面不要加空格),假如匹配用户名是只能字母开头后面是字母加数字加下划线的5到11位的
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$"); //注意,写规则的时候,里面千万不能有空格,不然匹配不出来你想要的内容,除非你想要的内容本身就想要空格,比如最后这个{5,11},里面不能有空格 // 匹配响应的字符串
var s1 = "bc123"; //RegExp对象的test方法,测试一个字符串是否符合对应的正则规则,返回值是true或false。
reg1.test(s1); // true // 创建方式2,简写的方式
// /填写正则表达式/匹配模式(逗号后面不要加空格)
var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/; reg2.test(s1); // true 注意,此处有坑:如果你直接写一个reg2.test(),test里面啥也不传,直接执行,会返回一个true,用其他的正则规则,可能会返回false,是因为,test里面什么也不传,默认传的是一个undefined,并且给你变成字符串undefined,所以能够匹配undefined的规则,就能返回true,不然返回false // String对象与正则结合的4个方法
var s2 = "hello world"; s2.match(/o/g); // ["o", "o"] 查找字符串中 符合正则 的内容 ,/o/g后面这个g的意思是匹配所有的o
s2.search(/h/g); // 0 查找字符串中符合正则表达式的内容位置
s2.split(/o/g); // ["hell", " w", "rld"] 按照正则表达式对字符串进行切割
s2.replace(/o/g, "s"); // "hells wsrld" 对字符串按照正则进行替换 // 关于匹配模式:g和i的简单示例
var s1 = "name:Alex age:18"; s1.replace(/a/, "哈哈哈"); // "n哈哈哈me:Alex age:18"
s1.replace(/a/g, "哈哈哈"); // "n哈哈哈me:Alex 哈哈哈ge:18" 全局匹配
s1.replace(/a/gi, "哈哈哈"); // "n哈哈哈me:哈哈哈lex 哈哈哈ge:18" 不区分大小写 // 注意事项1:
// 如果regExpObject带有全局标志g,test()函数不是从字符串的开头开始查找,而是从属性regExpObject.lastIndex所指定的索引处开始查找。
// 该属性值默认为0,所以第一次仍然是从字符串的开头查找。
// 当找到一个匹配时,test()函数会将regExpObject.lastIndex的值改为字符串中本次匹配内容的最后一个字符的下一个索引位置。
// 当再次执行test()函数时,将会从该索引位置处开始查找,从而找到下一个匹配。
// 因此,当我们使用test()函数执行了一次匹配之后,如果想要重新使用test()函数从头开始查找,则需要手动将regExpObject.lastIndex的值重置为 0。
// 如果test()函数再也找不到可以匹配的文本时,该函数会自动把regExpObject.lastIndex属性重置为 0。 var reg3 = /foo/g;
// 此时 regex.lastIndex=0
reg3.test('foo'); // 返回true
// 此时 regex.lastIndex=3
reg3.test('xxxfoo'); // 还是返回true
// 所以我们在使用test()方法校验一个字符串是否完全匹配时,一定要加上^和$符号,把匹配规则写的确定一些,尽量不用上面这种的写法/xxx/。 // 注意事项2(说出来你可能不信系列):
// 当我们不加参数调用RegExpObj.test()方法时, 相当于执行RegExpObj.test(undefined),然后将这个undefined又转为字符串"undefined",去进行匹配了, 并且/undefined/.test()默认返回true。
var reg4 = /^undefined$/;
reg4.test(); // 返回true
reg4.test(undefined); // 返回true
reg4.test("undefined"); // 返回true RegExp相关

python之路--JavaScript的更多相关文章

  1. python之路 JavaScript基础

    一.JavaScript简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为 浏览器的一部分,广泛用于客户端 ...

  2. python之路 目录

    目录 python python_基础总结1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while python 基础2 编码转换 pych ...

  3. Python之路【第十八篇】:Web框架们

    Python之路[第十八篇]:Web框架们   Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...

  4. Python之路【第十七篇】:Django【进阶篇 】

    Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

  5. Python之路【第十七篇】:Django之【进阶篇】

    Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

  6. Python之路【第十七篇】:Django【进阶篇】

    Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

  7. Python之路,Day18 - 开发一个WEB聊天来撩妹吧

    Python之路,Day18 - 开发一个WEB聊天来撩妹吧   本节内容: 项目实战:开发一个WEB聊天室 功能需求: 用户可以与好友一对一聊天 可以搜索.添加某人为好友 用户可以搜索和添加群 每个 ...

  8. Python之路,Day17 - 分分钟做个BBS论坛

    Python之路,Day17 - 分分钟做个BBS论坛   本节内容: 项目:开发一个简单的BBS论坛 需求: 整体参考"抽屉新热榜" + "虎嗅网" 实现不同 ...

  9. Python之路,Day14 - It's time for Django

    Python之路,Day14 - It's time for Django   本节内容 Django流程介绍 Django url Django view Django models Django ...

随机推荐

  1. 【转】编写微信聊天机器人4《聊天精灵WeChatGenius》:实时获取到微信聊天消息,hook数据库插入操作。

    接上篇,使用Xposed来hook微信,找到微信进程:https://blog.csdn.net/weixin_42127613/article/details/81839537 既然已经找到了微信进 ...

  2. Node.js之mysql增删改查

    1.安装库 npm install mysql 2.编写db.js(用作公共模块) //连接MySQL数据库 var mysql = require("mysql"); var p ...

  3. Python脱产8期 Day06 2019/4/18

    一 深浅拷贝 例:ls = [1, 'abc', [10]] 1.值拷贝:s1 = ls    # ls1直接将ls中存放的地址拿过来,>ls内部的值发生任何变化,ls1都会随之变化. 2.浅拷 ...

  4. Linux进程管理 (9)实时调度类分析,以及FIFO和RR对比实验

    关键词:rt_sched_class.SCHED_FIFO.SCHED_RR.sched_setscheduler().sched_setaffinity().RR_TIMESLICE. 本文主要关注 ...

  5. 建一个网站python

    域名()+  服务器+ 源码 制作一个自己的网站.................

  6. scrapy 爬取糗事百科

    安装scrapy conda install scrapy 创建scrapy项目 scrapy startproject qiubai 启动pycharm,发现新增加了qiubai这个目录 在spid ...

  7. IntelliJ IDEA(十一) :Debug的使用

    Debug模式是开发人员必会的一项调试程序的技能,用来追踪代码的运行流程,线上问题追踪,程序运行异常定位调试,以及在运行过程中参数的变化.IDEA的debug对于新手如何快速上手呢? 一.基本介绍 本 ...

  8. 使用hibernate造成的MySql 8小时问题解决方案

    本文借鉴了网上的很多博客,在此不再声明 总结 1.增加 MySQL 的 wait_timeout 属性的值(不推荐) mysql5之前的版本,可以在jdbc连接的url中加入:autoReconnec ...

  9. Windows Community Toolkit 3.0 - UniformGrid

    概述 UniformGrid 控件是一个响应式的布局控件,允许把 items 排列在一组均匀分布的行或列中,以填充整体的可用显示空间,形成均匀的多个网格.默认情况下,网格中的每个单元格大小相同. 这是 ...

  10. OO生存指南P1

    写在OO作业之前 在正式写oo作业之前,先说一些“废话”吧,就当是对oo的吐槽. 事实上,早在大一的时候,听说数分很难,然而事实证明数分并没有有让我通宵的体验. 在大二上的时候有一门课叫祭祖,号称是第 ...