JavaScript学习笔记-基础部分

白嫖地址:https://www.bilibili.com/video/BV1HJ41147DG

本笔记未全面记录学习笔记,只记录对自己感觉陌生或者感觉重要的部分

若要学习,推荐资料+B站白嫖

全套课件资料地址:链接:https://pan.baidu.com/s/1N6iJGPMkPLBkY9x7SMZbXA 
提取码:8fil

JS 
三种格式:
内联   
行式(onclick=) 
外联<script src="my.js">这中间不能写代码了</script>
约定JS字符串使用单引号
注释 
单行// 
多行/*多行*/  shift+alt+a
弱类型语言:变量没有数据类型

弹窗(获取)
1、var myname=prompt('请输入你的名字');//获取用户交互   取到的数据是字符串类型
2、alert(myname)
3、console.log() //打印到控制台

变量不声明 只赋值引用会造成全局变量  这样实际编码不提倡  但是可能对于我们安全测试 会有点用处
变量大小写敏感

变量 八进制 第一位为0   十六进制 0x
isNaN()判断是不是数字的函数
字符串拼接   str1+str2
true+1=2
undefined+1=NaN

加减乘除可以使数据类型隐式转换为数字型  取整函数是直接截取整数部分,不四舍五入

短路运算   逻辑中断会影响程序运行     优先级 &&>||>!
&&逻辑他运算符:在程序中如果出现非布尔值,则前面为真  就返回后面的值  前面为假  返回前面的值
console.log(123&&456) //456
console.log(0&&456) //0   那些算假呢?:0   ‘ ’    NaN     undefined
console.log(0&&456+2&&3*4) //0   还是0 由于碰到0短路了后面的都不算了  直接返回0
||逻辑他运算符:在程序中如果出现非布尔值,则前面为真  就返回前面的值  前面为假 就返回后面的值
console.log(0||456)  //456   第一个是假 返回第二个
console.log(123||456)  //123  第一个是真 返回第一个

function函数中最后返回的值只能是最后一个 不管返回多少值  若要返回多个值 可以包装成数组输出

全局变量(函数外定义的)与局部变量(函数内定义的)
作用域链:内部函数访问外部函数的变量,采取的是先找自己的内部,自己内部没有就找包含自己的外部函数,在没有就继续向外找


预解析:
JS引擎会把当前作用域中的var和function提升到当前作用域的最前面执行
变量预解析(变量提升):
把当前作用域中变量声明提升到当前作用域最前面执行,但是只提升声明操作,不提升赋值操作
函数预解析(函数提升):
把当前作用域中函数声明提升到当前作用域的最前面执行,但不调用函数

对象:
一个数据的集合,内部通过“键值对”的形式存储数据  类似于python的字典 只是对象里面的函数定义有点不同
sayHi:function(){
alert(1)}
利用对象存储数据的优势:
对象内部存储的每个数据都有对象的“键”标识指向,对开发者来说能更直观直接的使用对象准确获取数据,数据存储结构清晰
还有一种利用new Object()方法创建对象的方法 感觉好像更好

构造函数:将对象里面一些相同的属性和方法抽象出来封装到函数里面   和Java一样  构造函数没有返回值
function 构造函数名() {
	this.属性 = 值; 
	this.方法 = function() { } 
}
var zz=new 构造函数名(加参数,加参数)

遍历对象属性输出
for(var k in obj){
console.log(k)
console.log(obj[k])
}

内置对象:JS语言自带的对象,供开发者直接使用  常见的 Math Date  Array  String
Math.round() 四舍五入方法
Math.random() 0到1之间随机小数
Date构造函数需要实例化 是关于时间的内置函数

instanceof检测是否为数组
var arr=[]
console.log(arr instanceof  Array)
还有个方法 arr.isArray()  H5新增  ie9以上支持

sort()排序  只能排个位数  十位数的话需要
var arr=[1,13,22,6,8]
arr.sort(function(a,b){
	return a-b; //升序的顺序排列
	return b-a; //降序的顺序排列
})

indexOf() 查找数组是否有该元素  有的话返回数组下标 没有返回-1  
此函数可用于构造数组去重的函数
function unique(arr) {
            var newArr = [];
            for (var i = 0; i < arr.length; i++) {
                if (newArr.indexOf(arr[i]) === -1) {
                    newArr.push(arr[i]);
                }
            }
            return newArr;
        }
        // var demo = unique(['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'])
        var demo = unique(['blue', 'green', 'blue'])
        console.log(demo);

数组转换为字符串 tostring() join() 
        // 1. toString() 将我们的数组转换为字符串
        var arr = [1, 2, 3];
        console.log(arr.toString()); // 1,2,3
        // 2. join(分隔符) 
        var arr1 = ['green', 'blue', 'pink'];
        console.log(arr1.join()); // green,blue,pink
        console.log(arr1.join('-')); // green-blue-pink
        console.log(arr1.join('&')); // green&blue&pink


 //  判断一个字符串 'abcoefoxyozzopp' 中出现次数最多的字符,并统计其次数。
 //  这个算法片段比较巧妙
        // o.a = 1
        // o.b = 1
        // o.c = 1
        // o.o = 4
        // 核心算法:利用 charAt() 遍历这个字符串
        // 把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1
        // 遍历对象,得到最大值和该字符
        var str = 'abcoefoxyozzopp';
        var o = {};
        for (var i = 0; i < str.length; i++) {
            var chars = str.charAt(i); // chars 是 字符串的每一个字符
            if (o[chars]) { // o[chars] 得到的是属性值
                o[chars]++;
            } else {
                o[chars] = 1;
            }
        }
        console.log(o);

猜你喜欢

转载自www.cnblogs.com/Qiuzhiyu/p/12619288.html