javaScript是一门世界上最流行的脚本语言。
<!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>
语法和java基本一致,甚至没有java严格,但是和java一样严格区分大小写
console.log()在浏览器的控制台打印变量
变量都是用var
浮点数问题:
console.log((1/3===(1-2/3)))
尽量避免使用浮点数进行运算,存在精度问题,可以通过下面这个运算,来得到两个值是不是几乎相等
Math.log((1/3===(1-2/3))<0.0000000001
null和undefined
数组:
对象:
如果下面这个strict语法报错,则因为idea没有选到es6版本
"use strict"写到最前面一行
let局部变量
1、正常的字符串我们使用单引号,或者双引号包裹
2、注意转义字符
3、多行字符串编写````
4、模板字符串
let mag = `你好:,${name}`
5、字符串长度
str.length
6、字符串的可变性,不可变
7、大小写转换
//注意这里是方法,不是属性
student.toUpperCase
student.toLowerCase
8、student.indexOf()
9、subbstring():从第一个字符串截取到最后一个,包含前面,不包含后面
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、多维数组
var person{
name: "dawdaw",
age:12,
score:11
}
1、对象赋值
2、使用一个不存在的对象属性不会报错,会返回undefind
3、动态的删减属性:通过delete删除对象的属性
4、动态的添加,直接给新的属性添加至即可
5、判断属性值是否在这个对象中xxxinxxx
6、判断一个属性是否是这个对象自身拥有的hasOwnPropetty()
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)
})
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));//是否包含某个元素
遍历数组、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)
}
绝对值函数
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新特性:获取除了已经定义的参数之外的所有参数
假设在函数体重声明,则在函数体外不可以使用。(非要实现的话,后期可以研究一下 闭包)
function qj(){
var x = 1;
x = x + 1;
}
x = x + 2;//ReferenceError: Can‘t find variable: x
提升变量的作用域:js的执行引擎,自动提升了y的声明,但是不会提升t的赋值。
全局函数:
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);
原文:https://www.cnblogs.com/qidai233333/p/14778927.html