首页 > 其他 > 详细

script

时间:2021-05-18 09:31:29      阅读:24      评论:0      收藏:0      [点我收藏+]

javaScipt

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

1、快速入门

1.1 引入javaSciprt

  1. 内部标签
  2. 外部引用
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--    外部引用
        注意<script>必须成对出现,不能自闭合
-->
    <script src="js/qj.js"></script>
<!--    <script>-->
<!--        alert("hello world");/* 弹窗*/-->
<!--    </script>-->
</head>
<body>

</body>
</html>

1.2基本语法入门

  • 语法和java基本一致,甚至没有java严格,但是和java一样严格区分大小写

  • console.log()在浏览器的控制台打印变量
    

1.3数据类型

变量都是用var

  • ===绝对等于(类型一样,值一样,结果谓true)
  • nan===nan,这个与所有的数值都不相等,包括自己。只能通过is(NAN)来判断这个数是不是NAN

浮点数问题:

console.log((1/3===(1-2/3)))

尽量避免使用浮点数进行运算,存在精度问题,可以通过下面这个运算,来得到两个值是不是几乎相等

  • Math.log((1/3===(1-2/3))<0.0000000001
    

null和undefined

  • null 空
  • indeflined未定义

数组:

  • java的数组必须是同类型的对象,而在js中,var已经包括了所有的类型,所有不用必须同类型对象。
  • 如果在显示数组的时候,java中显示数组下标越界的错误时,在js上则现实的是indefined

对象:

  • 对象是大括号,数组是中括号
  • 每个属性之间适用逗号隔开,最后一个不需要添加

1.4严格检查模式strict

  • 如果下面这个strict语法报错,则因为idea没有选到es6版本

  • "use strict"写到最前面一行
    
  • let局部变量

2、数据类型

2.1字符串

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

2、注意转义字符

3、多行字符串编写````

4、模板字符串

let mag = `你好:,${name}`

5、字符串长度

str.length

6、字符串的可变性,不可变

7、大小写转换

//注意这里是方法,不是属性
student.toUpperCase
student.toLowerCase

8、student.indexOf()

9、subbstring():从第一个字符串截取到最后一个,包含前面,不包含后面

2.2数组

Array可以包含任意数据类型

1、长度 .length

注意:加入给Array赋值,数组大小就会发生变化,如果赋值过小,元素就会丢失

2、indexOf通过获得下表索引

字符串的1和数字1是不同的

3、slice()截取数组的Array的一部分,返回一个新的数组,类似于String中的substring

4、push():压入到尾部

pop():弹出尾部的一个元素

5、unshif();头部

shift();

6、排序sort()

7、元素反转reverse

8、concat():返回一个新数组,不改变原来数组

9、连接符join

打印拼接数组使用特定的字符串链接

10、多维数组

2.3对象

  • 若干个键值对
var person{
  name: "dawdaw",
  age:12,
  score:11
}
  • js中的对象,{...}表示一个对象,键值对描述属性,多个属性之间使用,隔开,最后一个属性不加逗号。
  • javascript中的所有的键都是字符键,值是任意对象

1、对象赋值

2、使用一个不存在的对象属性不会报错,会返回undefind

3、动态的删减属性:通过delete删除对象的属性

4、动态的添加,直接给新的属性添加至即可

5、判断属性值是否在这个对象中xxxinxxx

6、判断一个属性是否是这个对象自身拥有的hasOwnPropetty()

2.4、流程控制

if判断

let age= 3;
if(age>3){
    alert("haha")
}else if(a<5){
  alert("kuwaawdwa")
}else {
    alert("kuwa")
}

while循环,避免程序死循环

while (age<100){
    age++;
    console.log(age)
}
do{
  age = age+1;
  console.log(age)
}while

for循环

for (let i = 0; i < 100; i++) {
    console.log(i);
}

foreach

var  age = [1,2,3,4,3,2,3,2,3,4,3];
age.forEach(function (value){
    console.log(value)
})

2.5、Map和Set

Map:

let map = new Map([[‘ton‘,100],[‘dwad‘,20],[‘fese‘,90]]);
let name = map.get(‘ton‘);//通过key获得value
map.set("a",22)
console.log(map);
map.delest(“tom”)

Set:无需不重复的集合

set.add(2);
set.delete(1);
console.log(set.has(3));//是否包含某个元素

2.6、iterator

遍历数组、Map和Set

‘use strict‘
var arr=[3,4,5];
for(var x of arr){
    console.log(x);
}
var arry = new Map([["DAW",12],["FAF",10],["FAWF",33]]);
for (let i of arry) {
    console.log(i);
}
var arr1 = new Set([5,6,7]);
for (let x of arr1){
    console.log(x)
}

3、函数

3.1、定义函数

绝对值函数

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

一旦执行到return代表函数结束,返回结果

如果没有执行return,函数执行完也会返回结果,结果就是undefined

方式二

var abs = function (X) {
  
}

function (X) {...}这是一个匿名函数,但是可以把结果赋值给abs,通过abs就可以调用函数

参数问题:javascript可以传任意个参数,也可以不传递参数。

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

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

function abs(x){
    console.log("x>=" + x);

    for (let i = 0; i < arguments.length; i++) {
         console.log(arguments[i]);
    }
  
       // if (arguments.length>1){
       //     arguments[1]
       // }
       if (x>=0){
           return x;
       }else {
           return -x;
       }
}

rest新特性:获取除了已经定义的参数之外的所有参数

4.2、变量的作用域

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

假设在函数体重声明,则在函数体外不可以使用。(非要实现的话,后期可以研究一下 闭包)

function qj(){
  var x = 1;
  x = x + 1;
}
x = x + 2;//ReferenceError: Can‘t find variable: x
  • 如果两个函数使用了相同的变量名,只要在函数内部,就不冲突。
  • 内部函数可以访问外部函数的成员。而外部函数不能访问内部函数的成员。
  • 假设内部函数变量截外部函数重名,函数值查找变量会从自身函数开始向外查找,选择最近的一个赋值

提升变量的作用域:js的执行引擎,自动提升了y的声明,但是不会提升t的赋值。

  • 比如:x = ’x‘ + y
    • y = ’y‘ 结果是:xundefined y是存在的,但是没有值
    • 这个是在js建立之初就存在的特性,养成规范:所有的变量定义都放在函数的头部,不要乱放,编译代码维护。

全局函数:

var x = 1;
function qj() {
  console.log(x);
}
qj();
console.log(x);

全局对象 window

var x = ‘xxx‘;
alert.x;
alert(window.x);//默认所有的全局变量,都会自动绑定在window对象

alert这个函数本身也是一个window变量:window.alert

js实际上只有一个全局作用域,任何变量(函数也可以视为变量),假设没有在函数作用范围内找到,就会向外查找,如果在全局作用域都没有找到,会宝座RefrenceRrror

规范:

  • 由于我们所有的全局变量都会绑定在window上,如果不同的js文件使用了相同的全局变量,就会冲突

  • //唯一的全局变量
    var Xiao = {};
    Xiao.name = "等等";
    Xiao.add = function (a,b){
      return a+b;
    }
    

    把自己的代码全部放入自己定义的唯一空间名字中,降低全局名冲突问题。

jQuery:等价于$();

局部作用域let

function aaa(){
  for (Var i = 0; i < 100; i++) {
    console.log(i)
  }
  console.log(i+1);//问题:出了这个作用域还可以使用
}

ES6 let关键字。解决局部作用域冲突

function aaa(){
  for (let i = 0; i < 100; i++) {
    console.log(i)
  }
  console.log(i+1);//问题:出了这个作用域还可以使用
}

建议使用let

常量const:

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

var F1 = ‘3.14‘
console.log(F1);
F1 = ‘11‘
console.log(F1);//可以改变

在ES6引用了常量关键字const

const PI = ‘3.14‘;//只读变量
console.log(PI);
PI = ‘233‘//这行是错误的
console.log(PI);

script

原文:https://www.cnblogs.com/qidai233333/p/14778927.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!