typeof null => Object类型
typeof是一个运算符,作用是返回类型
有2种使用方式:
typeof(表达式)对表达式做运算
typeof 变量名,对变量做运算
typeof的返回值
typeof运算符的返回类型为字符串,值包括如下几种:
1. 'undefined' --未定义的变量或值
2. 'boolean' --布尔类型的变量或值
3. 'string' --字符串类型的变量或值
4. 'number' --数字类型的变量或值
5. 'object' --对象类型的变量或值,或者null(这个是js历史遗留问题,将null作为object类型处理)
6. 'function' --函数类型的变量或值
另外还有两个特殊值
typeof null === ’object‘
JavaScript诞生以来就是这样子的
------------------------------------------------
在“==”下
JavaScript规范中规定unll和undefined是相等的,都代表无效的值。
但是在“===”下,
是不相等的,以为他们不属于同意数据类型
null属于object,undefined属于undefined类型。
正则表达式
?指可选,表示一次或0次
+表示该值可取1~无穷个,相当于{1,}
*表示该值可取0~无穷个,相当{0,}
C选项中意思是a可取1~无穷次,b可取1次或0次,不能完全匹配aabbb。故选C
let和var的区别体现在作用域上
var的作用域被规定为一个函数作用域,而let则被规定为块作用域,
块作用域要比函数作用域小一些,
但是如果两者既没在函数中,也没在块作用域中定义,那么两者都属于全局作用域。
const与let类似,都说再声明的块作用域中有效,但是const声明额变量不能改变,所以一旦声明const变量必须立马初始化,不能滞后赋值。
let的优越性:
get请求会被浏览器主动缓存,而post不会!
一个线程可以创建一个新的线程!
线程是系统资源分配的基本单位!
同一进程的线程之间可以共享资源!
- SELECT site_name
-
- FROM site
-
- WHERE id in (
-
- SELECT site_id
-
- FROM visit
-
- GROUP BY site_id
-
- ORDER BY COUNT(DISTINCT user_id) DESC
-
- LIMIT 3;
-
- )
- SELECT site_name
-
- FROM site
-
- WHERE id in (
-
- SELECT site_name
-
- FROM visit
-
- GROUP BY site_id
-
- ORDER BY COUNT(user_id) DESC
-
- LIMIT 3;
-
- )
两者区别,是否要去重
然后通过这道题,我才明确函数不是只用select后面的元素可用,排序依据也不一定要是查出来的东西,可以只用来查找而不显示,例如本题中的order by COUNT(user_id)desc;
每条边对应一个结点,只有根节点没有相应的边,所以根节点的度数为0。
树的度指的是,该树中最大结点的度称。
再依据题意(度为1,2,3,4的结点个数分别为xxxxx..)所以该树中只有0度数结点(叶子结点),1度数结点,2度数结点和3度数结点。
又 结点个数=边数+1;
边数=1*4+2*1+3*1+4*1=13;
所以结点数=13+1=14;
所以叶子结点个数=14(结点总数)-(4+1+1+1)(其他度数结点)= 7;
所以叶子结点个数为八。
(我发现我白学了离散数学了,我怎么一直以为叶子结点度数为1!!😅)
char表示定长、长度固定。varchanr表示变长,即长度可变。