js的数据类型、函数、流程控制及变量的四种声明方式

运算符

基本运算符
    加    +-*/
    取余  %
    自增  ++   eg: 1++ 或 ++1
    自减  --   eg: 1-- 或 --1
    注:++或--写在前面表示优先级最高,先进行自增或者自减
       写在后面表示优先级最低,比赋值还低,先干完别的再赋值
逻辑运算符
    与   &&||!
三元运算符
    res = 条件 ? 结果1 : 结果2
    条件成立取结果1,失败取结果2
    eg:res = 1 < 2 ? "小于" : "大于";
        console.log(res);   ==> 小于

数据类型

//数字类型   加减乘除
console.log(parseFloat("8/5asdsadqw"),typeof(parseFloat("8/5asdsadqw")));
// 字符串类型
let str = "123abc呵12呵";
// 索引取值
console.log(str[1]);
// 索引取值只能正着取才能取到  负着取和超出索引取不会报错,会给你undefined
// 切片slice
console.log(str.slice(1,3));
// 拆分split
console.log(str.split(''));
// 拼接  字符串拼接不可以乘法数字字符串乘法直接转换成数字类型相乘
// 迭代取值
for (k in str){     //迭代的是索引
    console.log(k)
};
for (k of str){     //迭代的是值
    console.log(k)
};
//替换replace
console.log(str.replace('12','qw'));
//替换只能替换第一次出现的

//数组
let ls = [5,3,7,2,0];
console.log(ls);
//重组join
console.log(ls.join()); //默认以空格拼接起来
console.log(ls.join(''));
// 排序
ls.sort();      //正序
ls.reverse();   //反序
console.log(ls);
//增删改查
ls.splice(0,1,'xx',2);
console.log(ls);
//splice( 开始的索引  , 你要操作的长度  ,  操作后的结果)
// 如果你操作长度为0 操作后的结果有值那就是增加
// 如果你操作长度有值,操作后的结果没有值那就是删除
// 如果都有值那就是修改
//查找
console.log(ls[1])  ;//可以根据索引取值

// 对象(字典)

let dic = {};
//
dic.name = 'hesujian';
//
delete dic.name;
//
dic.name = 'owen';
dic.name = 'hesujian';
//
console.log(dic['name']);
console.log(dic.name);
console.log(dic);
//对象和数组的迭代
console.log(ls);
for (k in ls){
    console.log(ls[k])
};
dic = {'name':'owen','age':28,'gender':'male','k':123};
for (k in dic){
    console.log(k);
    console.log(dic[k]);    //这里遍历出来的key只能通过这种方式进行查值
    console.log(dic.k);     //这种会把k当成dic的属性取查找,而不会替换成遍历出的值(一直去找dic有没有k属性对应的值)
};

数据类型

函数

`
函数的定义
function 函数名(参数列表) {
    函数体
    return 返回值
}
function: 定义函数的关键字
函数名: 使用函数的依据,加括号可以调用,就是一个变量
参数列表: 都是按位置传,没有关键字形参,形参与实参个数不必统一,但一定是按位置传值(你传你的,我传我的)
函数体: 完成主体功能的代码块
return: 返回值,只能返回一个值,不能解压赋值(所以要返回多个需要用数组或对象装起来)
`;
function fn(a,b) {
    console.log(a,b);
};
fn();       //不传里面的a,b就是未定义undefined
fn(1);      // a就是1  b就是undefined
fn(1,2,3);  // a是1 b是2
`
匿名函数
function () {
};
函数没有名字就是匿名函数
`;
//匿名函数的作用
    //1.当一个函数的参数需要一个函数地址,就可以把匿名函数直接传进去
        function f(ff) {
            ff();
        };
        f(function () {});
    //2.用变量接收匿名函数 , 这也是函数的第二种声明方式
        let a = function () {};
        a();
    //3.为事件提供方法体
        div.onclick = function () {
        };
    //4.匿名函数的自调用,一次性使用
        (function () {})()

函数

  

流程控制

  有顺序  分支  循环  (默认是顺序)

 随机数

//随机数 Math.random()   [0,1)
//[0,1)  ==> [m,n]
//[0,1) * n-m+1 ==> [0,n-m+1)
//[0,n-m+1) parseInt() ==> [0,n-m]
//[0,n-m] + m  ==> [m,n]
//公式:parseInt(Math.random * (n-m+1)) + m   ==> [m,n]

if条件判断

 
`
if (条件) {

} else if (条件) {

} else {

}
`;
 

while循环

`
while循环
while (条件) {
    代码块
};
`

for循环

 
`
for 循环
for (赋初值①; 条件②; 自增③) {
    代码块④
};
与python不同的就是for括号里面有三个值,执行过程是①②④③  ②④③ ... ②
`
 

do while 循环

`
do while 循环
do{
}while();
与for循环类似,唯一不同点是,do while先执行后判断 for是先判断后执行
`;

四种声明方式

 
`
let a = 1;
    变量,有块级作用域,定义在块级作用域内,外面看不到,不允许重复定义
const b = 2;
    常量,有块级作用域,定义在块级作用域内,外面看不到,不允许重复定义
var c = 3;
    变量,有局部作用域,定义在局部作用域内,外面看不到,定义在块级作用域时,外面可以看到,允许重复定义
d = 4;
    变量,相当于全局定义,在哪都能看到,可以重复定义。
`;
`
块级作用域与局部作用域
    块级作用域: {} 就是块级作用域
    局部作用域:函数的{}里是局部作用域
`;
原文地址:https://www.cnblogs.com/huikejie/p/11186382.html