diff --git "a/\351\203\255\350\211\272\346\263\211/20211019-\347\254\2541\346\254\241\347\254\224\350\256\260-\345\210\235\350\257\206JS.md" "b/\351\203\255\350\211\272\346\263\211/20211019-\347\254\2541\346\254\241\347\254\224\350\256\260-\345\210\235\350\257\206JS.md" new file mode 100644 index 0000000000000000000000000000000000000000..ca701feef1a3db98ebf19cfe52c79386f2656e92 --- /dev/null +++ "b/\351\203\255\350\211\272\346\263\211/20211019-\347\254\2541\346\254\241\347\254\224\350\256\260-\345\210\235\350\257\206JS.md" @@ -0,0 +1,47 @@ +# 20211019-第1次笔记-初识JS + +--- + +## 初识JavaScript + +JavaScript是一种运行在浏览器中的解释型的编程语言。 + +- *HTML* 定义网页的内容 +- *CSS* 规定网页的布局 +- *JavaScript* 对网页行为进行编程 + +在Web世界里,只有JavaScript能跨平台、跨浏览器驱动网页,与用户交互。 + +JavaScript 和 Java 是完全不同的语言,不论是概念还是设计 + +## 基础知识 + +JavaScript的语法和Java语言类似,每个语句以;结束,语句块用{...}。但是,JavaScript并不强制要求在每个语句的结尾加;,浏览器中负责执行JavaScript代码的引擎会自动在每个语句的结尾补上;。 + +{...}可以嵌套,形成层级结构 + +以//开头直到行末的字符被视为行注释 + +另一种块注释是用/**...**/把多行字符包裹起来,把一大“块”视为一个注释 + +``` +var A ='1' +//声明变量A并赋值 + +console.log(A) +//输出变量A + +alert('hello') +//弹窗 +``` + +## 补充 + +**一般script标签会被放在头部或尾部**。头部就是里面,尾部一般指里 + +**浏览器解析是自上而下加载解析** + +**将script放在里**,浏览器解析HTML,发现script标签时,会先下载完所有这些script,再往下解析其他的HTML。讨厌的是浏览器在下载JS时,是不能多个JS并发一起下载的。不管JS是不来来自同一个host,浏览器最多只能同时下载两个JS,且浏览器下载JS时,就block掉解析其他HTML的工作[1]。将script放在头部,会让网页内容呈现滞后,导致用户感觉到卡。所以建议将script放在尾部,这样能加速网页加载。 + +**将script放在尾部的缺点**,是浏览器只能先解析完整个HTML页面,再下载JS。而对于一些高度依赖于JS的网页,就会显得慢了。所以将script放在尾部也不是最优解,最优解是一边解析页面,一边下载JS。 + diff --git "a/\351\203\255\350\211\272\346\263\211/20211021-\347\254\2542\346\254\241\347\254\224\350\256\260-\346\225\260\346\215\256\347\261\273\345\236\213\345\222\214\345\217\230\351\207\217.md" "b/\351\203\255\350\211\272\346\263\211/20211021-\347\254\2542\346\254\241\347\254\224\350\256\260-\346\225\260\346\215\256\347\261\273\345\236\213\345\222\214\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..4017ab0f8167dbacf149fbcfde178f9f6b87e98c --- /dev/null +++ "b/\351\203\255\350\211\272\346\263\211/20211021-\347\254\2542\346\254\241\347\254\224\350\256\260-\346\225\260\346\215\256\347\261\273\345\236\213\345\222\214\345\217\230\351\207\217.md" @@ -0,0 +1,131 @@ +# 20211021-第2次笔记-数据类型和变量 + +1.prototype 英[ˈprəʊtətaɪp] 美[ˈproʊtətaɪp] n.原型; 雏形; 最初形态; + +2.function 英[ˈfʌŋkʃn] 美[ˈfʌŋkʃn] n.作用; 功能; 职能; 机能; 典礼; 宴会; 函数; v.起作用; 正常工作; 运转; + +--- + +## 六大数据类型 + +**1.Number类型** + +Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)两种值。统一用Number表示. + +NaN:非数字类型。特点:① 涉及到的 任何关于NaN的操作,都会返回NaN ② NaN不等于自身。 + +isNaN() 函数用于检查其参数是否是非数字值。 + +```isNaN(123) //false ``` + +```isNaN("hello") //true``` + +**2.String类型** + +字符串有length属性。 + +字符串转换:转型函数String(),适用于任何数据类型(null,undefined 转换后为null和undefined);toString()方法(null,defined没有toString()方法)。 + +**3.Boolean类型** + +该类型只有两个值,true和false + +**4.Undefined类型** + +只有一个值,即undefined值。使用var声明了变量,但未给变量初始化值,那么这个变量的值就是undefined。 + +**5.Null类型** + +null类型被看做空对象指针,前文说到null类型也是空的对象引用。 + +**6.Object类型** + +js中对象是一组属性与方法的集合。这里就要说到引用类型了,引用类型是一种数据结构,用于将数据和功能组织在一起。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。 + +详见课件:[2.基本语法和数据类型/readme_part2.md · 郭艺泉/JavaScript课程 - 码云 - 开源中国 (gitee.com)](https://gitee.com/gshimmer/javascript_course/blob/master/2.基本语法和数据类型/readme_part2.md) + +## 运算符 + +**逻辑运算符** + +1. && 运算是与运算,只有所有都为true,&&运算结果才是true + +2. || 运算是或运算,只要其中有一个为true,||运算结果就是true + +3. ! 运算是非运算,它是一个单目运算符,把true变成false,false变成true + +**比较运算符** + +1. ==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果 +2. ===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较 + +​ 由于JavaScript这个设计缺陷,不要使用==比较,始终坚持使用===比较。 + +示例 + +``` +console.log(1/3==(1-2/3)); //返回一个false +console.log(1/3-(1-2/3)<0.0001); //返回一个true +``` + +## 变量 + +变量全部用var声明 + +变量名是大小写英文、数字、$和_的组合,且不能用数字开头。变量名也不能是JavaScript的关键字,如if、while等。 + +``` +ar a; // 申明了变量a,此时a的值为undefined +var $b = 1; // 申明了变量$b,同时给$b赋值,此时$b的值为1 +var s_007 = '007'; // s_007是一个字符串 +var Answer = true; // Answer是一个布尔值true +var t = null; // t的值是null +``` + +使用等号=对变量进行赋值。可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var申明一次 + +这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。 + +``` +//JS +var a = 123; // a的值是整数123 +a = 'ABC'; // a变为字符串 +//Java +int a = 123; // a是整数类型变量,类型用int申明 +a = "ABC"; // 错误:不能把字符串赋给整型变量 +``` + +## 数组 + +数组是一组按顺序排列的集合,集合的每个值称为元素。JavaScript的数组可以包括任意数据类型。 + +``` +//通过Array()函数实现 + var arr = new Array (2, 3.14, 'Hello', null, true) ;//数组可以包括任意数据类型(number.boolean.string等) + console.log(arr); +//用[]表示 + var Arr = [2, 3.14, 'Hello', null, true] ; + console.log(Arr); +``` + + 出于代码的可读性考虑,强烈建议直接使用[]。 + +## 对象 + +JavaScript的对象是一组由键-值组成的无序集合 + +JavaScript对象的键都是字符串类型,值可以是任意数据类型 + +``` +var person = { + name: '艺泉', + age: 20, + tags: ['js', 'csharp', 'sql'], + city: 'longyan', + hasCar: true, + zipcode: null +}; +console.log(person.name) +//控制台输出结果为 艺泉 +``` + diff --git "a/\351\203\255\350\211\272\346\263\211/20211022-\347\254\2543\346\254\241\347\254\224\350\256\260-\345\255\227\347\254\246\344\270\262\347\233\270\345\205\263.md" "b/\351\203\255\350\211\272\346\263\211/20211022-\347\254\2543\346\254\241\347\254\224\350\256\260-\345\255\227\347\254\246\344\270\262\347\233\270\345\205\263.md" new file mode 100644 index 0000000000000000000000000000000000000000..b8d16ce46b60e6bb1bb9da8a0bd953b2c5830f8c --- /dev/null +++ "b/\351\203\255\350\211\272\346\263\211/20211022-\347\254\2543\346\254\241\347\254\224\350\256\260-\345\255\227\347\254\246\344\270\262\347\233\270\345\205\263.md" @@ -0,0 +1,193 @@ +# 20211022-第3次笔记-字符串相关 + +--- +## 转义字符和特殊字符 + +``` +I\'m \"OK\"!'; +表示的字符串内容是:I'm "OK"! +``` + +​ JS中转义字符为\ + +| 代码 | 输出 | +| ---- | ----------- | +| \\' | 单引号 | +| \\" | 双引号 | +| \\\ | 反斜杠 | +| \n | 换行 | +| \r | 回车 | +| \t | tab(制表符) | +| \b | 退格符 | +| \f | 换页符 | + +## 文字编码 + +目前的文字编码标准主要有 ASCII、GB2312、GBK、Unicode等。ASCII 编码是最简单的西文编码方案。 +GB2312、GBK、GB18030 是汉字字符编码方案的国家标准。ISO/IEC 10646 和 Unicode 都是全球字符编码的国际标准。 + +**目前unicode和UTF-8大行其道,但GB2312和GBK仍在广泛使用。** + + + +## 字符串常用方法 + + 字符串连接: + +``` +var name = '小明'; +var age = 20; +var message = '你好, ' + name + ', 你今年' + age + '岁了!'; +alert(message); +2. +var name = '小明'; +var age = 20; +var message = `你好, ${name}, 你今年${age}岁了!`; +alert(message); +``` +toUpperCase()把一个字符串全部变为大写: +``` +var s = 'Hello'; +s.toUpperCase(); // 返回'HELLO' +``` +toLowerCase()把一个字符串全部变为小写: +``` +var s = 'Hello'; +var lower = s.toLowerCase(); // 返回'hello'并赋值给变量lower +lower; // 'hello' +``` +indexOf()会搜索指定字符串出现的位置: +``` +var s = 'hello, world'; +s.indexOf('world'); // 返回7 +s.indexOf('World'); // 没有找到指定的子串,返回-1 +``` +substring()返回指定索引区间的子串: +``` +var s = 'hello, world' +s.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello' +s.substring(7); // 从索引7开始到结束,返回'world' +``` + +**注意: +javascript 中substring中的索引从0开始 +sql server 中substring中的索引从1开始** + + +提取部分字符串的方法: + +``` +//copy from wjy + +slice(start, end) +substring(start, end) +substr(start, length) +//start和end均是字符串的下标(索引) +//slice(start,end):提取字符串的某个部分并在新字符串中返回被提取的部分。 + +var str2='露从今夜白,月是故乡明' +console.log(str2.slice(2,4));//返回今夜 +console.log(str2.slice(2));//如果只穿、有第一个参数,返回的是从第一个参数往后所有的字符 +console.log(str2.slice(-2));//从结尾开始计数,返回乡明 + +//substring(start, end):类似于slice但是无法返回负的参数 + +console.log(str2.substring(2,4)); +console.log(str2.substring(2));//返回结果和slice相同 + +//substr(start, length):和slice相似但是第二个参数规定的是被提取字符串的长度,且第二个参数不能为空 + +console.log(str2.substr(2,4)); +``` + +## 全局变量相关 +``` +1、在js的function外定义变量; +var name='测试'; + +function XX(){ + + alert(name); + +} + +2、不使用var,直接给定义变量,隐式的声明了全局变量; +var name='测试'; + +function XX(){ + + alert(name); + +} + +/* +这种方法,即使该变量是在一个function内,当该function被执行后它变成了全局变量 +但是function不执行它就不被其他function知道,所以最好定义在function外 +*/ + +3、使用“window.变量名”定义为全局变量。 +window.name='测试'; + +function XX(){ + +alert(window.name); + +} + +/* +注意:调用时候建议写上window.变量名,当然也可以不写; +我们常用的document.getXXX的document对象就是window的 +*/ +``` + +windows对象相关详见:https://www.w3school.com.cn/jsref/dom_obj_window.asp + +## 繁体简体转化 + +``` + +``` + +## diff --git "a/\351\203\255\350\211\272\346\263\211/README.md" "b/\351\203\255\350\211\272\346\263\211/README.md" new file mode 100644 index 0000000000000000000000000000000000000000..fd83aa2317ce0e37bf5be7ab8bc55661903417ce --- /dev/null +++ "b/\351\203\255\350\211\272\346\263\211/README.md" @@ -0,0 +1,2 @@ +## 零落成泥碾作尘 +## 只有香如故 \ No newline at end of file