JavaScript

JS-DOM和BOM操作示例

js文件内容

// 这是单行注释
/*
这是
多行
注释
 */

alert(123);
alert(321);
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>JS-DOM和BOM操作示例</title>
    <!--<link rel="stylesheet" href="">-->
    <!--<script>-->
        <!--alert(123);-->
    <!--</script>-->
    <script src="02.js"></script>
</head>
<body>

</body>
</html>

JS语法基础

JavaScript引入方式

Script标签内写代码

<script>
  // 在这里写你的JS代码
</script>

引入额外的JS文件

<script src="myscript.js"></script>

JavaScript语言规范

// 这是单行注释

/*
这是
多行注释 */

结束符

JavaScript中的语句要以分号(;)为结束符。

JavaScript语言基础

变量声明

  1. JavaScript的变量名可以使用_,数字,字母,$组成,不能以数字开头。
  2. 声明变量使用 var 变量名; 的格式来进行声明
var name = "Alex";
var age = 18;

 

注意:

变量名是区分大小写的。

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

JavaScript数据类型

JavaScript拥有动态类型

var x;  // 此时x是undefined
var x = 1;  // 此时x是数字
var x = "Alex"  // 此时x是字符串 

数字类型

JavaScript不区分整型和浮点型,就只有一种数字类型。

var a = 12.34;
var b = 20;
var c = 123e5;  // 12300000
var d = 123e-5;  // 0.00123

常用方法:

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

 

字符串

var a = "Hello"
var b = "world;
var c = a + b; 
console.log(c);  // 得到Helloworld

常用方法:

方法说明
obj.length返回长度
obj.trim()移除空白
obj.trimLeft()移除左边的空白
obj.trimRight()移除右边的空白
obj.charAt(n)返回第n个字符
obj.concat(value, ...)拼接
obj.indexOf(substring, start)子序列位置
obj.substring(from, to)根据索引获取子序列
obj.slice(start, end)切片
obj.toLowerCase()小写
obj.toUpperCase()大写
obj.split(delimiter, limit)分割

 indexOf第二个填参数所有负数或者不填或者都会取到结果

拼接字符串一般使用“+”

布尔类型

区别于Python,true和false都是小写。

var a = true;
var b = false;

数组

类似于Python中的列表。

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

 常用方法:

方法说明
obj.length数组的大小
obj.push(ele)尾部追加元素
obj.pop()获取尾部的元素
obj.unshift(ele)头部插入元素
obj.shift()头部移除元素
obj.slice()切片
obj.reverse()反转
obj.join(seq)将数组元素连接成字符串
obj.concat(val, ...)连接数组
obj.sort()排序

遍历数组中的元素:

var a = [10, 20, 30, 40];
for (var i=0;i<a.length;i++) {
  console.log(i);
}

对象

类似于Python中的字段数据类型

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]);
}

null和undefined

  • undefined表示的是当声明的变量未初始化时,该变量的默认值是undefined。还有就是函数无明确的返回值时,返回的也是undefined。
  • null表示值不存在

undefined表示声明了变量,但是还没有赋值。null声明了变量并且变量是空值。

类型查询

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

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

运算符

算数运算符

+ - * / % ++ --

 

比较运算符

> >= < <= != == === !==

注意:

1 == “1”  // true
1 === "1"  // false

 

逻辑运算符

&& || !

 

赋值运算符

= += -= *= /=

流程控制

if-else

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

 

if-else if-else 

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

switch

var day = new Date().getDay();
switch (day) {
  case 0:
  console.log("Sunday");
  break;
  case 1:
  console.log("Monday");
  break;
default:
  console.log("...")
}

for

for (var i=0;i<10;i++) {
  console.log(i);
}

while

var i = 0;
while (i < 10) {
  console.log(i);
  i++;
}

三元运算

var a = 1;
var b = 2;
var c = a > b ? a : b

 

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>JS语法基础</title>
    <script>
        /*
        var name;  // 先声明变量
        name = "Alex";  // 赋值变量
        console.log(name);

        var name2 = "Egon";
        console.log(name2);


        var n1 = 1;
        var n2 = 123.456;
        var n3 = 123e5;
        var n4 = 123e-5;
        console.log(n1, n2, n3, n4);

        // 字符串常用方法
        var name3 = "Alex";
        var age = 18;

        console.log(name3 + age);
        */

        // 字符串转数字
        var a = "123";
        var ret = parseInt(a);
        console.log(ret);

        var b = "123.456";
        ret = parseFloat(b);
        console.log(ret);

        var c = "ABC";
        ret = parseInt(c);
        console.log(ret);
    </script>
</head>
<body>

</body>
</html>

 

*****今日小结*****

1.JS语言基础:
1.基本数据类型
2.变量
3.流程控制
4.语法/注释
5.函数
6.对象

2.DOM和BOM编程

DOM --> Document Object Model
BOM --> Browser Object Model


JS语法基础:
语句结束之后要写分号; *****
$也可以做变量名
推荐使用驼峰命名

JS数据类型:
数字类型

字符串类型
字符串自带的那些属性和方法
字符串转数字

布尔类型

数组
数组的内置属性和方法
数组的遍历

var i = 0;
i++; i= i+1; --> i+=1(Python);


对象(简单的对象)
对象的遍历

条件判断和循环
if... else ...
if... else if...else
switch
case 值1: 要做的事儿;break;
case 值2: 要做的事儿;break;
default: 条件都不满足默认执行的

for 循环
for (var i=0;条件;i++){
循环要做的事儿;
}

while循环
while (条件){
循环要做的事儿;
}

三元运算
条件 ? 值1: 值2

 

函数

函数定义

JavaScript中的函数和Python中的非常类似,只是定义方式有点区别。

// 普通函数定义
function f1() {
  console.log("Hello world!");
}

// 带参数的函数
function f2(a, b) {
  console.log(arguments);  // 内置的arguments对象
  console.log(arguments.length);
  console.log(a, b);
}

// 带返回值的函数
function sum(a, b){
  return a + b;
}
sum(1, 2);  // 调用函数

// 匿名函数方式
var sum = function(a, b){
  return a + b;
}
sum(1, 2);

// 立即执行函数
(function(a, b){
  return a + b;
})(1, 2);

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

局部变量

在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。

全局变量:

在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

变量生存周期:

JavaScript变量的生命期从它们被声明的时间开始。

局部变量会在函数运行以后被删除。

全局变量会在页面关闭后被删除。

作用域

首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层。

几个例子:

1.

var city = "BeiJing";
function f() {
  var city = "ShangHai";
  function inner(){
    var city = "ShenZhen";
    console.log(city);
  }
  inner();
}

f();  //输出结果是shenzhen

2.

var city = "BeiJing";
function Bar() {
  console.log(city);
}
function f() {
  var city = "ShangHai";
  return Bar;
}
var ret = f();
ret();  // 打印结果是beijing

3.闭包

var city = "BeiJing";
function f(){
    var city = "ShangHai";
    function inner(){
        console.log(city);
    }
    return inner;
}
var ret = f();
ret();      #shanghai

内置对象和方法

JavaScript中的所有事物都是对象:字符串、数字、数组、日期,等等。在JavaScript中,对象是拥有属性和方法的数据。

我们在学习基本数据类型的时候已经带大家了解了,JavaScript中的Number对象、String对象、Array对象等。

自定义对象

类似于(某方面类似)Python中的字典数据类型

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属性

 

JS函数示例
//
最基础的函数定义 function f1() { console.log("Hello world!"); } f1(); // 带参数的函数 function f2(name, age) { console.log("姓名:" + name + "年龄:" + age); } f2("Alex", 18); // 带返回值的函数 function f3(arg1, arg2) { return arg1 + arg2; } var s = f3("Alex", "帅B"); console.log(s); // 匿名函数 var sum = function (arg1, arg2) { return arg1 + arg2; }; ret = sum(1, 2); console.log(ret); var n; // 提前声明要使用的全局变量 // 自执行函数 (function (arg1, arg2) { // n = 1000; // 相当于定义了一个全局变量 n = 1000; var m = 100; console.log("自执行函数:" + (arg1 + arg2)); })(10, 20);

Date对象

创建Date对象

//方法1:不指定参数
var d1 = new Date();
console.log(d1.toLocaleString());
//方法2:参数为日期字符串
var d2 = new Date("2004/3/20 11:12");
console.log(d2.toLocaleString());
var d3 = new Date("04/03/20 11:12");
console.log(d3.toLocaleString());
//方法3:参数为毫秒数
var d3 = new Date(5000);
console.log(d3.toLocaleString());
console.log(d3.toUTCString());

//方法4:参数为年月日小时分钟秒毫秒
var d4 = new Date(2004,2,20,11,12,0,300);
console.log(d4.toLocaleString());  //毫秒并不直接显示

Date对象的方法:

var d = new Date(); 
//getDate()                 获取日
//getDay ()                 获取星期
//getMonth ()               获取月(0-11)
//getFullYear ()            获取完整年份
//getYear ()                获取年
//getHours ()               获取小时
//getMinutes ()             获取分钟
//getSeconds ()             获取秒
//getMilliseconds ()        获取毫秒
//getTime ()                返回累计毫秒数(从1970/1/1午夜)

Date示例:

编写代码,将当前日期按“2017-12-27 11:11 星期三”格式输出。

function getNow() {
    var d = new Date();  // 获取当前的日期对象
    var dYear = d.getFullYear();  // 获取当前年份
    var dMonth = d.getMonth();  // 获取当前月份
    var dDate = d.getDate();  // 获取当前日期
    var dHour = d.getHours();  // 获取当前小时
    var dMinute = d.getMinutes();  // 获取当前分钟
    var dWeek = d.getDay();  // 获取当前星期

    var weekStr = [ "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
    if (dMinute < 10){
        dMinute = "0" + dMinute;
    }
    console.log(dYear + "-" + (dMonth+1) + "-" + dDate + " " + dHour + ":" + dMinute + " " + weekStr[dWeek]);

}
getNow();

 另外一种方法

var d=new Date("2017/12/27 10:35");
var dweek=d.getDay();
var n;
switch (d.getDay()) {
    case 0:{
       n="星期日" ;}break;
    case 1:{
       n="星期一" ;}break;
    case 2:{
       n="星期二";}break;
    case 3:{
       n="星期三";}break;
    case 4:{
       n="星期四";}break;
    case 5:{
       n="星期五" ;}break;
    case 6:{
       n="星期六" ;}
}

console.log(d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate()+" "+d.getHours()+":"+d.getMinutes()+" "+n );

 

JSON对象

var str1 = '{"name": "Alex", "age": 18}';
var obj1 = {"name": "Alex", "age": 18};
// JSON字符串转换成对象
var obj = JSON.parse(str1); 
// 对象转换成JSON字符串
var str = JSON.stringify(obj1);

JSON序列化示例

 

// JSON序列化和反序列化
var o = {"name": "Alex", "age": 18};
// 序列化
var s = JSON.stringify(o);
console.log(o, typeof o);
console.log(s, typeof s);
// 反序列化
var obj = JSON.parse(s);
console.log(obj, typeof obj);

 

RegExp对象

//RegExp对象

//创建正则对象方式1
// 参数1 正则表达式
// 参数2 验证模式:g(global)和i(忽略大小写)

// 用户名只能是英文字母、数字和_,并且首字母必须是英文字母。长度最短不能少于6位 最长不能超过12位。

// 创建RegExp对象方式
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$", "g");

// 匹配响应的字符串
var s1 = "bc123";

//RegExp对象的test方法,测试一个字符串是否符合对应的正则规则,返回值是true或false。
reg1.test(s1);  // true

// 创建方式2
// /填写正则表达式/匹配模式
var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/g;

reg2.test(s1);  // true



// String对象与正则结合的4个方法
var s2 = "hello world";

s2.match(/o/g);         // ["o", "o"]             查找字符串中 符合正则 的内容
s2.search(/h/g);        // 0                      查找字符串中符合正则表达式的内容位置
s2.split(/o/g);         // ["hell", " w", "rld"]  按照正则表达式对字符串进行切割
s2.replace(/o/g, "s");  // "hells wsrld"          对字符串按照正则进行替换

正则相关示例:

 

// 正则相关的示例

// 方式1
    // 第一个参数: 正则表达式
    // 第二个参数: 匹配模式
var r1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$", "g");

var s1 = "alex123";
var s2 = "123alex";
console.log(r1.test());
console.log(r1.test());

var r2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/g;
console.log(r2.test(s1));
console.log(r2.test(s2));

// 与字符串自带的方法结合
var s = "alex 18";
ret1 = s.search("a");
ret2 = s.search(/[0-9]{2}/g);
console.log(ret1);
console.log(ret2);

 

 

 

Math对象

abs(x)      返回数的绝对值。
exp(x)      返回 e 的指数。
floor(x)    对数进行下舍入。
log(x)      返回数的自然对数(底为e)。
max(x,y)    返回 x 和 y 中的最高值。
min(x,y)    返回 x 和 y 中的最低值。
pow(x,y)    返回 x 的 y 次幂。
random()    返回 0 ~ 1 之间的随机数。
round(x)    把数四舍五入为最接近的整数。
sin(x)      返回数的正弦。
sqrt(x)     返回数的平方根。
tan(x)      返回角的正切。

 

 

*****本章总结*****

JS语法基础部分
1. JS发展史 ES6 (ECMAScript 2016)
2. JS代码在HTML中的两种引用方式
1. <script>直接写代码</script>
2. 1. <script src="js文件"></script>
3. 注释
1. 单行注释 //
2. 多行注释 /* ... */
4. 语句结束符 --> ;
5. 变量命名规范
1. 数字、字母、下划线、$
2. 不能以数字开头
3. 推荐使用驼峰命名方式
JS数据类型
1. 数字类型
1. 常用属性和方法
parseInt()
parseFloat()

NaN --> 表示非数字

2. 字符串类型
1. 字符串常用属性和方法

3. 布尔类型
true和false

4. 数组
类似于Python中的列表
sort()是有毒的

5. 对象
类似于Python中的字典

6. 判断数据类型 --> typeof

7. null和undefined
null --> 表示值为空
undefined --> 表示变量声明了但是没有赋值/函数没有定义返回值默认返回undefined


运算符
1. 数学运算符
2. 逻辑运算符
3. 比较运算符
1. ==
2. === 强等于 --> 既判断类型也判断值
4. 赋值运算符
5. 三元运算
条件 ? 值1: 值2 --> 条件是true是值1,false的话就是值2
Python里面的三元运算:
值1 if 条件 else 值2

条件判断和流程控制

if判断
if (条件) {
条件成立要做的事儿;
} else {
条件不成立要做的事儿;
}

if (条件) {
条件成立要做的事儿;
} else if (条件2) {
条件2成立要做的事儿;
} else {
条件都不成立要做的事儿;
}

switch
switch (v) {
case 值1: 执行的代码;break;
case 值2: 执行的代码;break;
case 值3: 执行的代码;break;
default: 上面条件都不成立执行的代码;
}

注意:
break;

for循环

for (var i=0;i<长度;i++) {
循环执行的代码;
}

for (var i in obj) {
console.log(i);
}

while循环

while (条件) {
循环执行的代码;
}


函数 *****

1. 函数的定义
function 函数名(参数1, 参数2){
函数体;
return 返回值;
}

匿名函数
python中是 lambda --> lambda 参数: 返回值

JS中
自执行函数
(function(){})(arg);
闭包
类似于Python中
内部函数可以访问外部函数的变量

2. Date对象
1. month是0~11
2. day是星期,0~6
3. 获取年份用.getFullYear

3. JSON序列化 *****
python中:
1. import json
2. 序列化(把对象转换成字符串) --> json.dumps(obj)
3. 反序列化(把字符串转换回对象) --> json.loads(str)

JS中:
1. 序列化(把对象转换成字符串) --> JSON.stringify(obj)
2. 反序列化(把字符串转换回对象) --> json.parse(str)

4. 正则表达式
1. Python里面:
1. import re
2. p1 = re.compile("^[a-zA-Z][a-zA-Z0-9_]{5,11}$")
3. p1.match()
4. p1.search()
5. p1.findall()
匹配模式:
忽略大小写 re.I
贪婪匹配

2. JS
两种方式:
1. RegExp对象方式
1. var p = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$", "g")
2. p.test(str)
2. 简写方式
/正则表达式/匹配模式

5. Math对象
Python里面:
直接使用max\min
JS里面:
通过Math对象来做数学相关操作的
Math.
abs(x) 返回数的绝对值。
exp(x) 返回 e 的指数。
floor(x) 对数进行下舍入。
log(x) 返回数的自然对数(底为e)。
max(x,y) 返回 x 和 y 中的最高值。
min(x,y) 返回 x 和 y 中的最低值。
pow(x,y) 返回 x 的 y 次幂。
random() 返回 0 ~ 1 之间的随机数。
round(x) 把数四舍五入为最接近的整数。
sin(x) 返回数的正弦。
sqrt(x) 返回数的平方根。
tan(x) 返回角的正切。

 

 

 

 

转载于:https://www.cnblogs.com/weiwu1578/articles/8118200.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值