Javastrict

1,什么是Javastrict

1.1,概述

Javastrict是一门世界上最流行的脚本语言

1.2,历史

ECMAScript它可以理解为是Javastrict的一个标志

开发环境 ----- 线上环境, 版本不一致

2,快速入门

2.1,引入Javastrict

1,内部标签

    <script>
        alert('hello word')
    </script>

2,外部引入

script.js

alert('hello word')
<script src="JavaScript/script.js"></script>

2.2,基本语法入门

<!-- !Javastrict严格区分大小写-->
    <script>
        //1,定义变量   变量类型  变量名  = 变量值;
        var score = 71;
        //条件控制
        if(score>60 && score<70 ){
            alert("60~70")
        }else if (score>70 && score<80){
            alert("70~80")
        }else{
            alert("other")
        }
        //console.log(score) 在浏览器的控制台打印变量 == System.out.println()
    </script>

2.3,数据类型

数值 ,文本 , 图形 , 音频 视频 。。。

number

Javastrict不区分小数和整数, number

字符串

‘abc’ "abc“

布尔值

true false

逻辑运算

&& || !

比较运算符

=

== 类型不一样 数值一样 结果也会为true

=== 绝对相等

null 和 undefined

  • null 空

  • undefined 未定义

数组

Java 的数值中必须是相同类型的对象 ~ ,Javastrict中不需要这样!

var arr = [1,2,3,4,'hello',null,true]

对象

对象是大括号,数组是中括号`~

每个属性之间用逗号隔开,最后一个不用

var person ={
    name:"lisa",
    age:4,
    tags:['js','java','med','...']
}

2.4,严格检查模式

<!-- 前提:IDEA 需要设置支持 ES6 语法
'use  strict';严格检查模式,预防Javastrict的随意性导向性导致产生的一些问题
必须写在Javastrict 的第一行!
局部变量建议使用let去定义~
-->
    <script>
        'use strict';
        // 全局变量
        let i = 1;
        //ES6  let
    </script>

3,数据类型

3.1,字符串

1,正常字符串我们使用 单引号,或者双引号包裹

2,转义字符

\t
\n
\'
\u4e2d  
"\x41"'

3,多行字符串编写

  //tab 上面  单点号
  var msg =
          `hello
          word
          你好`

4,模板字符串

'use  strict'
let name = "lisa";
let age = 5;
let msa = `你好 ,${name}`

5,字符串长度

console.log(str.length)

6,字符串不可变

var student ='lisa';
student[0] = 1;   
console.log(student);//lisa

7,大小写转换

console.log(student.toUpperCase()) //注 这里是方法
//LISA

8,查看某个字符的下标 student.indexOf(‘a’)

9,截取某个位置之后(或者之间)的字符 student.substring(1)

3.2,数组

Array可以包含任意的数据类型

var arr = [1,2,3,4,56,3];//通过下标取值和赋值
console.log(arr[0]);
arr[0] = 3;
console.log(arr[0]);

1,长度

arr.length : 如果给arr.length赋值,数组大小就会发生变化~ 如果赋值太小,元素就会丢失

2,indexOf,通过元素获得下标索引

arr.lindexOf(2)
1

3,slice()根据下标截取Array的一部分,并且返回一个新数组,类似于String中的substring

4,push() pop() 尾部

push:    压入尾部
pop:    弹出尾部一个元素

5,unshift(), shift() 头部

unshift : 压入到头部
 shift    弹出头部的一个元素

6,排序 sort()

arr.sort()

7,元素反转 ;

arr.reverse()

8,concat()

arr = [1,2,3]
(3) [1, 2, 3]
arr.concat(["a","b","c"])
(6) [1, 2, 3, "a", "b", "c"]
arr
(3) [1, 2, 3]

concat()没有修改数组,只是会返回一个新数组

9,连接符join

arr.join(’—’) 在数组元素中添加连接符

3.3,对象

若干个键值对

var 对象名 ={
      属性名: 属性值,
      }
var person ={
    name:"lisa",
    age: 3,
    email:"23112@qq.com"
};

js对象中,{…}表示一个对象,键值对描述对象 多个属性之间用逗号隔开,最后一个属性之后不加符号。

1,对象赋值

person.name = "tome"
"tome"
person.name
"tome"

2,使用一个不存在的对象 不会报错!undefined

3,动态的删减属性,添加(直接赋值)

delete person.age
true
person.haha="lis"
"lis"

4,判断属性值是否在这个对象中!

'name' in person
true
//继承
'toString'in person
true

5,判断一个对象是否自身拥有某个属性hasOwnProperty(‘toString’)

person.hasOwnProperty('name')
true
person.hasOwnProperty('toString')
false

3.4,流程控制

if。。。。

while、、、

for、、、、

forEach循环

var arr = [1,2,3,4,56,3];//通过下标取值和赋值
arr.forEach(function (value) {
    console.log(value)

});

for … in…

for (var num in arr){  //num 获得为元素下标
    console.log(arr[num])
}

3.5,Map和 Set

map

var map = new Map([['tom',100],['jack',323]]);
var name =map.get('jack');//通过key获得value
map.set('admin',123);
console.log(name);
//控制台
map
Map(3) {"tom" => 100, "jack" => 323, "admin" => 123}

set :无序不重复的集合

var set = new Set([1,2,3,4,5,4,4,5,2]);
console.log(set);
set.add(6);
set.delete(1); //删除
console.log(set.has(2));//true  是否包含某个元素

3.6,iterator

1,通过 for …of for …in 遍历数组

var arr = [2,4,5,6];
for (lat x of arr){
    console.log(x)
}
for (lat num in arr){
    console.log(arr[num])
}

2,遍历Map

var map = new Map([["tom",100],["lisa",90],["jack",98]]);
for (let x of map){
    console.log(x)
}

3,遍历set

var set = new Set([1,2,3,4,5,4,4,5,2]);
for (let y of set){
    console.log(y)
}

4,函数

4.1,定义函数

绝对值函数

定义方式一

function abs(x) {
    if (x>=0){
        return x;
    }else{
        return -x;
    }
}
//abs(4)
4

一旦执行到return 代表函数接住,返回结果‘

定义方式二

var  abs = function(x){
   if (x>=0){
        return x;
    }else{
        return -x;
    }
}

function(x){…}这是一个匿名函数。但是可以把结果赋值给abs 从而调用函数!

假设不存在参数,

function abs(x) {
    //如果无参数,手动抛出异常
    if (typeof x!== 'number'){
        throw 'not a number';
    }
    if (x>=0){
        return x;
    }else{
        return -x;
    }
}

arguments

arguments是一个js免费赠送的关键词

代表传递进来的所有参数,是一个数组!

function abs(x) {
    console.log("x=>"+x);
    for (var i = 0; i <arguments.length ; i++) {
        console.log(arguments[i]);
    }
    if (x>=0){
        return x;
    }else{
        return -x;
    }
}

rrest

function aaa(a,b,c,...rest) {
    console.log("a=>"+a);
    console.log("b=>"+b);
    console.log(rest);
}

rest 参数只能写在最后面,必须用 … 标识

4.2,变量作用域

在Javastrict中,var定义变量实际是有作用域的。

假设在函数体中声明,在函数体外不可以使用(闭包

function yu() {
    var x = 1;
    x = x + 1;
}
x = x + 2;//x is not defined

两个函数使用相同变量名,在函数内部就不冲突

function yu() {
    var x = 1;
    x = x + 1;
}
function pq() {
    var x = 1;
    x = x + 1;
}

内部函数调用外部函数成员

function yu() {
    var x = 1;
    x = x + 1;
    function pq() {
        var y = x+ 1;//x  (内部函数)可以调用外部函数成员 反之不行
    }
}

内部函数变量和外部函数重名!

function yu() {
    var x = 1;
    function pq() {
        var x = 'a';
        console.log('inner'+x); inner a
    }
    pq();
    console.log('outer'+x); outer1
}
yu();

函数查找变量从自身函数查找,由内向外,外部存在重名变量,屏蔽外部,使用内部。

提示变量作用域

function yu() {
    var x = 'x' + x;
    console.log(x);//xundefined
    var y = 'y';
    }
yu();

结果:xundefined

说明:js执行引擎,自动提升了y的声明,但是不会提升变量y的赋值;

可以把所有的变量放到前面赋值,便于代码维护

//var a ,c ,v

全局变量

var x = 1;//全局变量,放前面
function f() {
    console.log(x)
}
function f1() {
}

全局对象window

var x = 'xxx';
alert(x);
alert(window.x);

alert()这个函数本身也是一个window变量

局部作用域let

function f() {
    for (var i = 0; i <10 ; i++) {
        console.log(i
    }
    console.log(i+1);//i出了f 作用域还可以使用  var
}

let关键字,es6

function f() {
    for (let i = 0; i <10 ; i++) {
        console.log(i
    }
    console.log(i+1);//i  is not defined
}

常量 const

es6之前,怎么定义常量:只有全部用大写字母的变量就是常量;建议不要修改这样的值

var PI = '3.14';
console.log(PI);
PI = '213';//可以改变这个值
console.log(PI);

ES6之后const

const P = '3.12';
console.log(P);
P = '32';//不可修改

4.3,方法

定义方法

方法就是把函数放在对象的里面,对象只有两个东西,属性和方法

var aa = {
    name:'lisa',
    bitrh:2000,
    //方法
    age: function () {
    //今年- 出生年月
        var now = new Date().getFullYear();
        return now - this.bitrh;
    }
};
aa.age();

this是无法指向的,默认指向调用它的那个对象

apply

 function age () {
    var now = new Date().getFullYear();
    return now - this.bitrh;
}
var aa = {
    name:'lisa',
    bitrh:2000,
};
 age.apply(aa,[]);//this 指向了aa 参数为空

在js 中可以通过apply控制this的指向。

5,内部对象

5.1,Date

基本使用

'use strict';
var now = new Date(); // 现在时间
now.getFullYear();    // 年
now.getMonth();       // 月
now.getDate();        // 日
now.getDay();         //  星期几
now.getHours();        //  时
now.getMinutes();     //  分
now.getSeconds();      //  秒

now.getTime();// 时间戳 全世界统一 ·970 1~1 0:00:00 毫秒数

转换

now = new Date(15343256635)

5.2,JSON

什么是json

  • JSON(javaScript Notation, JS 对象简谱)是一种轻量级的数据交换格式。
  • 简洁和清晰的层次结构是JOSN 成为理想的数据交换语言。
  • 易于人阅读和编写,同时也易于机器解析和生成,并有效的提升网络传输效率。

在Javastrict一切皆为对象,任何js支持的类型都可以用JOSN 表示,

格式:

  • 对象用{}
  • 数组用 【】
  • 所有键值对 用key: value

JSON字符串和js对象的转换

<script>
    var user = {
        name:"lisa",
        age:3,
        sex:"女"
    };
    //将对象转换为JSON字符串
    var jsonUser = JSON.stringify(user)
    //将JSON字符串转换为对象
    var obj = JSON.parse('{"name":"lisa","age":3,"sex":"女"}')
</script>

5.3,Ajax

原生的js写法 xhr异步请求

jQuery 封装好的方法 $("#name").ajax("")

axios 请求

面对对象编程

6.1,什么是面向对象

Javastrict相对于java,c# … 面向对象;有些区别

  • 类:模板
  • 对象:具体的实例

原型

<script>
    var student = {
        name:"lisa",
        age:3,
        run:function () {
            console.log(this.name+"run...")
        }
    };
    var xiaoming = {
        name:"xiaoming"
    };
    xiaoming.__proto__ = student;
    var bird={
        fly:function () {
            console.log(this.name + "fly...")
        }
    };
    //xiaoming的原型是student
    xiaoming.__proto__ = bird;

</script>

class继承

'class’关键字ES6之后引入

1,定义一个类,属性,方法

<script>
//ES6之后
    //定义一个学生类
    class Student{
        constructor(name) {
            this.name= name;
        }
        hello(){
            alert('hello')
        }
    }
    var xiaoming = new Student("xiaoming")
    xiaoming,hello()

</script>

2,继承

<script>
//ES6之后
    //定义一个学生类
    class Student{
        constructor(name) {
            this.name= name;
        }
        hello(){
            alert('hello')
        }
    }
    //继承
    class xiao extends Student{
        constructor(name,grade) {
            super(name);
            this.grade = grade;
        }
        mrgrade(){
            alert('我是xaio,')
    }
    }
    var xiaoming = new Student("xiaoming")

</script>

后面其他的没有总结。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值