范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

JavaScript短小精悍的代码片段

  获取随机布尔值(True/False)
  使用 Math.random() 会返回 0 到 1 的随机数,之后判断它是否大于 0.5,将会得到一个 50% 概率为 True 或 False 的值const randomBoolean = () => Math.random() >= 0.5; console.log(randomBoolean());判断一个日期是否是工作日
  判断给定的日期是否是工作日const isWeekday = (date) => date.getDay() % 6 !== 0; console.log(isWeekday(new Date(2021, 0, 11))); // Result: true (周一) console.log(isWeekday(new Date(2021, 0, 10))); // Result: false (周日)反转字符串
  有许多反转字符串的方法,这里使用一种最简单的,使用了 split(),reverse() 和 join()const reverse = str => str.split("").reverse().join(""); reverse("hello world");      // Result: "dlrow olleh"判断当前标签页是否为可视状态
  浏览器可以打开很多标签页,下面的代码段就是判断当前标签页是否是激活的标签页const isBrowserTabInView = () => document.hidden; isBrowserTabInView();判断数字为奇数或者偶数
  取模运算符 % 可以很好地完成这个任务const isEven = num => num % 2 === 0; console.log(isEven(2)); // Result: true console.log(isEven(3)); // Result: false从 Date 对象中获取时间
  使用 Date 对象的 .toTimeString() 方法转换为时间字符串,之后截取字符串即可const timeFromDate = date => date.toTimeString().slice(0, 8); console.log(timeFromDate(new Date(2021, 0, 10, 17, 30, 0)));  // Result: "17:30:00" console.log(timeFromDate(new Date())); // Result: 返回当前时间保留指定小数位const toFixed = (n, fixed) => ~~(Math.pow(10, fixed) * n) / Math.pow(10, fixed); // Examples toFixed(25.198726354, 1);       // 25.1 toFixed(25.198726354, 2);       // 25.19 toFixed(25.198726354, 3);       // 25.198 toFixed(25.198726354, 4);       // 25.1987 toFixed(25.198726354, 5);       // 25.19872 toFixed(25.198726354, 6);       // 25.198726检查指定元素是否处于聚焦状态
  可以使用 document.activeElement 来判断元素是否处于聚焦状态const elementIsInFocus = (el) => (el === document.activeElement); elementIsInFocus(anyElement) // Result: 如果处于焦点状态会返回 True 否则返回 False检查当前用户是否支持触摸事件const touchSupported = () => {   ("ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch); } console.log(touchSupported()); // Result: 如果支持触摸事件会返回 True 否则返回 False检查当前用户是否是苹果设备
  可以使用 navigator.platform 判断当前用户是否是苹果设备const isAppleDevice = /Mac|iPod|iPhone|iPad/.test(navigator.platform); console.log(isAppleDevice); // Result: 是苹果设备会返回 True滚动至页面顶部
  window.scrollTo() 会滚动至指定的坐标,如果设置坐标为(0,0),就会回到页面顶部const goToTop = () => window.scrollTo(0, 0); goToTop(); // Result: 将会滚动至顶部获取所有参数的平均值
  可以使用 reduce() 函数来计算所有参数的平均值const average = (...args) => args.reduce((a, b) => a + b) / args.length; average(1, 2, 3, 4); // Result: 2.5转换华氏/摄氏const celsiusToFahrenheit = (celsius) => celsius * 9/5 + 32; const fahrenheitToCelsius = (fahrenheit) => (fahrenheit - 32) * 5/9; // Examples celsiusToFahrenheit(15);    // 59 celsiusToFahrenheit(0);     // 32 celsiusToFahrenheit(-20);   // -4 fahrenheitToCelsius(59);    // 15 fahrenheitToCelsius(32);    // 0防抖
  防抖原理:在一定时间内,只有最后一次操作,再过wait毫秒后才执行函数/* 	@param {Function} func 要执行的回调函数 	@param {Number} wait 延迟的时间 	@param{Boolean} immediate 是否要立即执行 */ let timeout = null; function debounce(func, wait = 500, immediate = false) {   // 清除定时器   if (timeout !== null) clearTimeout(timeout);   // 立即执行,此类情况一般用不到   if (immediate) {     var callNow = !timeout;     timeout = setTimeout(() => {       timeout = null;     }, wait);     if (callNow) typeof func === "function" && func();   } else {     // 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时wait毫秒后执行func回调方法     timeout = setTimeout(() => {       typeof func === "function" && func();     }, wait);   } }  export default debounce;节流
  节流原理:在一定时间内,只能触发一次/**  *   * @param {Function} func 要执行的回调函数   * @param {Number} wait 延时的时间  * @param {Boolean} immediate 是否立即执行  * @return null  */ let timer, flag; function throttle(func, wait = 500, immediate = true) { 	if (immediate) { 		if (!flag) { 			flag = true; 			// 如果是立即执行,则在wait毫秒内开始时执行 			typeof func === "function" && func(); 			timer = setTimeout(() => { 				flag = false; 			}, wait); 		} 	} else { 		if (!flag) { 			flag = true 			// 如果是非立即执行,则在wait毫秒内的结束处执行 			timer = setTimeout(() => { 				flag = false 				typeof func === "function" && func(); 			}, wait); 		} 		 	} }; export default throttle 时间格式化time 任何合法的时间格式、秒或毫秒的时间戳 format 时间格式,可选。默认为yyyy-mm-dd,年为"yyyy",月为"mm",日为"dd",时为"hh",分为"MM",秒为"ss",格式可以自由搭 function timeFormat(dateTime = null, fmt = "yyyy-mm-dd") { 	// 如果为null,则格式化当前时间 	if (!dateTime) dateTime = Number(new Date()); 	// 如果dateTime长度为10或者13,则为秒和毫秒的时间戳,如果超过13位,则为其他的时间格式 	if (dateTime.toString().length == 10) dateTime *= 1000; 	let date = new Date(dateTime); 	let ret; 	let opt = { 		"y+": date.getFullYear().toString(), // 年 		"m+": (date.getMonth() + 1).toString(), // 月 		"d+": date.getDate().toString(), // 日 		"h+": date.getHours().toString(), // 时 		"M+": date.getMinutes().toString(), // 分 		"s+": date.getSeconds().toString() // 秒 		// 有其他格式化字符需求可以继续添加,必须转化成字符串 	}; 	for (let k in opt) { 		ret = new RegExp("(" + k + ")").exec(fmt); 		if (ret) { 			fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0"))) 		}; 	}; 	return fmt; }  export default timeFormat多久以前
  结合上面的timeFormat时间转换方法一起使用/**  * 时间戳转为多久之前  * @param String timestamp 时间戳  * @param String | Boolean format 如果为时间格式字符串,超出一定时间范围,返回固定的时间格式;  * 如果为布尔值false,无论什么时间,都返回多久以前的格式  */ import timeFormat from "timeFormat.js"; function timeFrom(dateTime = null, format = "yyyy-mm-dd") { 	// 如果为null,则格式化当前时间 	if (!dateTime) dateTime = Number(new Date()); 	// 如果dateTime长度为10或者13,则为秒和毫秒的时间戳,如果超过13位,则为其他的时间格式 	if (dateTime.toString().length == 10) dateTime *= 1000; 	let timestamp = + new Date(Number(dateTime));  	let timer = (Number(new Date()) - timestamp) / 1000; 	// 如果小于5分钟,则返回"刚刚",其他以此类推 	let tips = ""; 	switch (true) { 		case timer < 300: 			tips = "刚刚"; 			break; 		case timer >= 300 && timer < 3600: 			tips = parseInt(timer / 60) + "分钟前"; 			break; 		case timer >= 3600 && timer < 86400: 			tips = parseInt(timer / 3600) + "小时前"; 			break; 		case timer >= 86400 && timer < 2592000: 			tips = parseInt(timer / 86400) + "天前"; 			break; 		default: 			// 如果format为false,则无论什么时间戳,都显示xx之前 			if(format === false) { 				if(timer >= 2592000 && timer < 365 * 86400) { 					tips = parseInt(timer / (86400 * 30)) + "个月前"; 				} else { 					tips = parseInt(timer / (86400 * 365)) + "年前"; 				} 			} else { 				tips = timeFormat(timestamp, format); 			} 	} 	return tips; }  export default timeFrom; 手机号中间4位加密export const phoneFormat = (phone = 0) => {   return String(phone).replace(/^(d{3})d{4}(d+)$/, "$1****$2"); };格式化显示银行卡号
  1111 2222 3333 4444 555export function trimCardNumber(value) {   value = String(value || "")     .replace(/s/g, "")     .replace(/(.{4})/g, "$1 ");   return value; }格式化显示手机号
  138 0000 0831 export function formatPhone(val) {   if (val) {     const matches = /^(d{3})(d{4})(d{4})$/.exec(val);     if (matches) {       return matches[1] + " " + matches[2] + " " + matches[3];     }   }   return val; }常用正则表达式// 验证手机号 const REGEXP_PHONE = /^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/; // 验证身份证号 const REGEXP_IDCARD = /^(^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$)|(^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])((d{4})|d{3}[Xx])$)$/;
  验证电子邮箱格式function email(value) { 	return /^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/.test(value); }
  验证手机格式function mobile(value) { 	return /^1[23456789]d{9}$/.test(value) }
  验证URL格式function url(value) { 	return /http(s)?://([w-]+.)+[w-]+(/[w-./?%&=]*)?/.test(value) }
  验证日期格式function date(value) { 	return !/Invalid|NaN/.test(new Date(value).toString()) }
  验证ISO类型的日期格式function dateISO(value) { 	return /^d{4}[/-](0?[1-9]|1[012])[/-](0?[1-9]|[12][0-9]|3[01])$/.test(value) }
  验证十进制数字function number(value) { 	return /^(?:-?d+|-?d{1,3}(?:,d{3})+)?(?:.d+)?$/.test(value) }
  验证整数function digits(value) { 	return /^d+$/.test(value) }
  验证身份证号码function idCard(value) { 	return /^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|X)$/.test( 		value) }
  是否车牌号function carNo(value) { 	// 新能源车牌 	const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/; 	// 旧车牌 	const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/; 	if (value.length === 7) { 		return creg.test(value); 	} else if (value.length === 8) { 		return xreg.test(value); 	} else { 		return false; 	} }
  金额,只允许2位小数function amount(value) { 	//金额,只允许保留两位小数 	return /^[1-9]d*(,d{3})*(.d{1,2})?$|^0.d{1,2}$/.test(value); }
  只能输入字母function letter(value) { 	return /^[a-zA-Z]*$/.test(value); }
  只能是字母或者数字function enOrNum(value) { 	//英文或者数字 	let reg = /^[0-9a-zA-Z]*$/g; 	return reg.test(value); }
  是否固定电话function landline(value) { 	let reg = /^d{3,4}-d{7,8}(-d{3,4})?$/; 	return reg.test(value); }
  判断是否为空function empty(value) { 	switch (typeof value) { 		case "undefined": 			return true; 		case "string": 			if (value.replace(/(^[ 	 r]*)|([ 	 r]*$)/g, "").length == 0) return true; 			break; 		case "boolean": 			if (!value) return true; 			break; 		case "number": 			if (0 === value || isNaN(value)) return true; 			break; 		case "object": 			if (null === value || value.length === 0) return true; 			for (var i in value) { 				return false; 			} 			return true; 	} 	return false; }
  是否json字符串function jsonString(value) { 	if (typeof value == "string") { 		try { 			var obj = JSON.parse(value); 			if (typeof obj == "object" && obj) { 				return true; 			} else { 				return false; 			} 		} catch (e) { 			return false; 		} 	} 	return false; }
  密码强度的校验
  说明:密码中必须包含字母、数字、特称字符,至少8个字符,最多30个字符const passwordReg = /(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,30}/  const password1 = "sunshine_Lin12345.." console.log(passwordReg.test(password1)) // true  const password2 = "sunshineLin12345" console.log(passwordReg.test(password2)) // false
  全局唯一标识符
  guid(length = 32, firstU = true, radix = 62) length  guid的长度,默认为32,如果取值null,则按rfc4122标准生成对应格式的随机数 firstU 首字母是否为"u",如果首字母为数字情况下,不能用作元素的id或者class,默认为true radix 生成的基数,默认为62,用于生成随机数字符串 function guid(len = 32, firstU = true, radix = null) { 	let chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""); 	let uuid = []; 	radix = radix || chars.length;  	if (len) { 		// 如果指定uuid长度,只是取随机的字符,0|x为位运算,能去掉x的小数位,返回整数位 		for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]; 	} else { 		let r; 		// rfc4122标准要求返回的uuid中,某些位为固定的字符 		uuid[8] = uuid[13] = uuid[18] = uuid[23] = "-"; 		uuid[14] = "4";  		for (let i = 0; i < 36; i++) { 			if (!uuid[i]) { 				r = 0 | Math.random() * 16; 				uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; 			} 		} 	} 	// 移除第一个字符,并用u替代,因为第一个字符为数值时,该guuid不能用作id或者class 	if (firstU) { 		uuid.shift(); 		return "u" + uuid.join(""); 	} else { 		return uuid.join(""); 	} }  export default guid;
  对象转URL参数
  queryParams(data, isPrefix = true, arrayFormat = "brackets")/**  * 对象转url参数  * @param {*} data,对象  * @param {*} isPrefix,是否自动加上"?"  */ function queryParams(data = {}, isPrefix = true, arrayFormat = "brackets") { 	let prefix = isPrefix ? "?" : "" 	let _result = [] 	if (["indices", "brackets", "repeat", "comma"].indexOf(arrayFormat) == -1) arrayFormat = "brackets"; 	for (let key in data) { 		let value = data[key] 		// 去掉为空的参数 		if (["", undefined, null].indexOf(value) >= 0) { 			continue; 		} 		// 如果值为数组,另行处理 		if (value.constructor === Array) { 			// e.g. {ids: [1, 2, 3]} 			switch (arrayFormat) { 				case "indices": 					// 结果: ids[0]=1&ids[1]=2&ids[2]=3 					for (let i = 0; i < value.length; i++) { 						_result.push(key + "[" + i + "]=" + value[i]) 					} 					break; 				case "brackets": 					// 结果: ids[]=1&ids[]=2&ids[]=3 					value.forEach(_value => { 						_result.push(key + "[]=" + _value) 					}) 					break; 				case "repeat": 					// 结果: ids=1&ids=2&ids=3 					value.forEach(_value => { 						_result.push(key + "=" + _value) 					}) 					break; 				case "comma": 					// 结果: ids=1,2,3 					let commaStr = ""; 					value.forEach(_value => { 						commaStr += (commaStr ? "," : "") + _value; 					}) 					_result.push(key + "=" + commaStr) 					break; 				default: 					value.forEach(_value => { 						_result.push(key + "[]=" + _value) 					}) 			} 		} else { 			_result.push(key + "=" + value) 		} 	} 	return _result.length ? prefix + _result.join("&") : "" }  export default queryParams; console.log(queryParams({name:"li",age:20})) // 结果:?name=li&age=20  const data = {name: "冷月夜",fruits: ["apple", "banana", "orange"]} queryParams(this.data, true, "indices"); // 结果为:?name=冷月夜&fruits[0]=apple&fruits[1]=banana&fruits[2]=orange  queryParams(this.data, true, "brackets"); // 结果为:?name=冷月夜&fruits[]=apple&fruits[]=banana&fruits[]=orange  queryParams(this.data, true, "repeat"); // 结果为:?name=冷月夜&fruits=apple&fruits=banana&fruits=orange  queryParams(this.data, true, "comma"); // 结果为:?name=冷月夜&fruits=apple,banana,orange
  去除空格str 字符串 pos 去除那些位置的空格,可选为:both-默认值,去除两端空格,left-去除左边空格,right-去除右边空格,all-去除包括中间和两端的所有空格 function trim(str, pos = "both") { 	if (pos == "both") { 		return str.replace(/^s+|s+$/g, ""); 	} else if (pos == "left") { 		return str.replace(/^s*/, ""); 	} else if (pos == "right") { 		return str.replace(/(s*$)/g, ""); 	} else if (pos == "all") { 		return str.replace(/s+/g, ""); 	} else { 		return str; 	} }  export default trim数组排序
  sort排序// 对数字进行排序,简写 const arr = [3, 2, 4, 1, 5] arr.sort((a, b) => a - b) console.log(arr) // [1, 2, 3, 4, 5]  // 对字母进行排序,简写 const arr = ["b", "c", "a", "e", "d"] arr.sort() console.log(arr) // ["a", "b", "c", "d", "e"]
  冒泡排序function bubbleSort(arr) {   let len = arr.length   for (let i = 0; i < len - 1; i++) {     // 从第一个元素开始,比较相邻的两个元素,前者大就交换位置     for (let j = 0; j < len - 1 - i; j++) {       if (arr[j] > arr[j + 1]) {         let num = arr[j]         arr[j] = arr[j + 1]         arr[j + 1] = num       }     }     // 每次遍历结束,都能找到一个最大值,放在数组最后   }   return arr }  //测试 console.log(bubbleSort([2, 3, 1, 5, 4])) // [1, 2, 3, 4, 5]获取URL参数
  URLSearchParams 方法// 创建一个URLSearchParams实例 const urlSearchParams = new URLSearchParams(window.location.search); // 把键值对列表转换为一个对象 const params = Object.fromEntries(urlSearchParams.entries());
  split方法function getParams(url) {   const res = {}   if (url.includes("?")) {     const str = url.split("?")[1]     const arr = str.split("&")     arr.forEach(item => {       const key = item.split("=")[0]       const val = item.split("=")[1]       res[key] = decodeURIComponent(val) // 解码     })   }   return res }  // 测试 const user = getParams("http://www.baidu.com?user=%E9%98%BF%E9%A3%9E&age=16") console.log(user) // { user: "阿飞", age: "16" }

广东省知识经济发展促进会一届七次会长办公会议顺利召开6月18日,广东省知识经济发展促进会一届七次会长办公会议暨换届工作小组第一次会议在副会长单位广州创品知识产权服务有限公司顺利召开。会长顾奇志,副会长广州创品知识产权服务有限公司董事集多种消毒方式于一身的空气净化器伊斐净宝伊斐净宝是广东伊斐净化科技有限公司旗下的品牌,伊斐净宝现已同时有新风机空气消毒机空气净化器。基于对伊斐净宝空气净化器的了解,发现空气净化器兼具空气消毒的功能,也可称之为空气消毒机。关于空气消毒机避不开的几点问题家用空气消毒机正逐步走进大众的视野,不管是空气消毒机的品牌,还是空气消毒机的性能形状等也被深入了解。曾经以为空气消毒只需要在人口密集流量大的地方,到现在空气消毒机慢慢成为被大众所接伊斐净宝空气消毒机清洁与保养空气消毒机的两大基本功能为空气消毒空气净化。通常搭载着风机滤网消毒设备,每种设备根据自己的特性对空气进行相应的处理。以下分别从风机滤网以及消毒设备来谈一谈空气消毒机的清洗与保养的问空气消毒机还能干这事儿吸油烟越来越多的青年人群在都市工作,并拥有自己两居室或三居室的家,他们大部分时间都会待在这个舒适的地方度过,做饭睡觉看书看电影等。在十分惬意的同时,也会有些许烦恼,比如尽管自家已经安装有选择靠谱的空气消毒机需要关注的问题经过数年的经验累积,尤其在空气净化器需求大幅增加的大环境下,越来越多的朋友对于空气净化器的认识也越来越多。空气净化器早已经不再仅仅应用于应用精密仪器制造食品制造等行业,空气净化器也慢享生活自由呼吸伊斐净宝空气消毒机11月的到来,意味着2020年即将远去,着这个特殊的年份,我们经历了太多的事故,在匆匆忙忙的日子里偶尔会略感疲惫。于是,小编总会找点时间找点空间,和自己好好相处,去湿地公园人民广场伊斐净宝空气消毒机光触媒光触媒也叫光催化剂,顾名思义是在光照的作用下产生某种特殊反应,其中纳米二氧化钛是一种比较典型的应用广泛的一种光催化剂材料,也是应用在空气消毒机上的一种具有光催化功能的半导体材料。二选购空气消毒机的一个重要指标洁净空气量(CADR值)随着空气消毒机逐渐被越来越多的家庭办公室等室内空间使用,如何选择一台能够满足在特定场所的要求就显得十分重要了,因为好的空气消毒机能很好地对室内空气进行净化和消毒,并且在一定程度上可广东伊斐净化科技有限公司2020年温泉之旅寒风凛凛,幸有一温泉,舒疲解乏。伊斐全体员工经过又一年辛勤的工作,有过为了如何生产更好的产品发生争执,有过为了准时交货而加班到半夜十二点,有过能在既定的时间造出一批又一批优质的产品控价公司排名电商时代的到来带动了品牌渠道的变革,短短几年期间,非常多的品牌开始布局线上市场。因此对于很多企业而言,线上线下相辅相成,互帮互助是最好的局面。但如今,很多企业面临的却是线上低价乱价
法国天才数学家加入华为意味着什么最近,来自法国天才数学家洛朗。拉福格宣布加入华为公司!他曾在02年荣获菲尔茨奖!这是数学领域的国际最高奖项之一。那他的加入意味着什么呢?其实人类现在所取得的所有科学成就,都是在有数微信支付宝收款码禁用?支付宝微信扫码收付款,可能要大变天了咱们大家也都知道,支付行业与咱们的生活是息息相关。最近央行发布了一条关于支付微信扫码支付的新规,从明年3月1号起,个人收款码不能用于经营性服务,三星宣布将于1月11日正式发布下一代Exynos处理器三星官方宣布将于2022年1月11日正式发布下一代Exynos处理器,搭载AMDRDNA2架构GPU。根据此前的爆料,下一代Exynos2200芯片采用ARMv9架构,GPU代号VPython多线程总结多线程常用模板在实际处理数据时,因系统内存有限,我们不可能一次把所有数据都导出进行操作,所以需要批量导出依次操作。为了加快运行,我们会采用多线程的方法进行数据处理,以下为我总结的多激光雷达Ouster联合创始人纪要Ouster3Q21LiDAR出货量同比增长127至1,630units。Ouster专注于四个领域工业智能基础设施机器人和汽车。该公司目前拥有140多名工程师,旨在通过利用摩尔定这些字节跳动人如何偷偷学习,然后惊艳所有人?最近,我们在内网分享了一些字节跳动同学默默学习,然后惊艳所有人的故事。没想到,文档一经发布,很快得到了几百条留言回复,不少人大方地分享了自己工作之余的学习经历。在字节跳动,很多By央视点名两大互联网女主播偷税漏税过亿元,被处罚趣谈八卦相信很多网友朋友都知道,网红(雪梨Cherie)以及网络主播林珊珊sunny。大家不知道的是,这两个千万级别的主播,在最近被央视点名曝光,原因是偷税以及漏税,涉及的金额多大把UC卖马云套现300亿,37岁拿全部家当来造车,何小鹏成功了吗?文璋队长编辑璋队长何小鹏,小鹏汽车UC优视联合创始人。2004年何小鹏与合伙人共同创办UC优视公司,随后10年他带领团队打造UC浏览器,用户突破5亿,成为全球第二大浏览器。2014曼哈顿中城严重堵车孕妇在豪华特斯拉车上生下女婴侨报网报道周日(12月5日),纽约市曼哈顿中城,因为严重堵车,一名孕妇在一辆豪华特斯拉(Tesla)电动车上生下了一名女婴。据纽约邮报报道,这辆黑色豪华X型号特斯拉电动车,拥有两个2022年前端React的100道面试题的第12题区分props和state问题对props和state设计理解正常的是?选项A。它们都是纯JS对象。B。props只能来自父级,组件本身始终无法设置。C。只有在state变化触发时,才会触发组件更新渲染。D华为MateBookXPro2022华为MateBookXPro2022款延续了家族式简洁设计风格,采用CNC工艺一体化金属机身,保持轻薄的同时,也让整机的质感更精致了一些。屏幕由13。9英寸提升到了14。2英寸,屏